Voluntad MySQL InnoDB ON UPDATE CASCADE actualización limitaciones correctamente durante un MySQL sustituir el comando?
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.
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/