Voluntad MySQL InnoDB ON UPDATE CASCADE actualización limitaciones correctamente durante un MySQL sustituir el comando?

StackOverflow https://stackoverflow.com/questions/2520480

Pregunta

Si tengo la tabla B con referencias de clave externa a la tabla A (ajustado a ON UPDATE CASCADE) y corro a

LOAD DATA INFILE file.txt REPLACE INTO TABLE A;

comando, se actualizarán las referencias correctamente?

Tenga en cuenta que no estoy hablando de ON DELETE CASCADE; Sé un comando REPLACE eliminará los registros de la tabla B si tengo ese conjunto.

¿Fue útil?

Solución

MySQL no se dispara el evento de actualización como resultado de una consulta sustituir, sólo la eliminación. He aquí por qué:

  

SUSTITUIR funciona exactamente igual que INSERT,   excepto que si una fila de edad en la tabla   tiene el mismo valor que una nueva fila para una   PRIMARY KEY o un índice UNIQUE, la   fila anterior se elimina antes de la nueva fila   se inserta.

     

(De la MySQL 5.0 Reference Manual )

Tengo un conjunto de clave externa con ON UPDATE CASCADE EN DELETE SET NULL, y cada vez que hago un reemplazo de la clave principal de la tabla externa, la clave externa en mi tabla relacionada se establece en NULL.

Otros consejos

De hecho, me llegó aquí después de buscar una respuesta similar. Parece que todavía CAMBIAR EN elimina artículos, siempre y cuando usted tiene en el set DELETE CASCADE para su restricción.

http : //www.mysqlperformanceblog.com/2007/01/18/insert-on-duplicate-key-update-and-replace-into/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top