如果我的表 B 具有对表 A 的外键引用(设置为 ON UPDATE CASCADE)并且我运行
LOAD DATA INFILE file.txt REPLACE INTO TABLE A;
命令,引用会正确更新吗?
请注意,我不是在谈论 ON DELETE CASCADE;我知道如果我有 REPLACE 命令将删除表 B 中的记录。
在寻找类似的答案后,我实际上来到了这里。只要您为约束设置了 ON DELETE CASCADE ,看起来 REPLACE INTO 仍会删除项目。
见http://www.mysqlperformanceblog.com/2007/01/18/insert-on-duplicate-key-update-and-replace-into/
MySQL 不会因为替换查询而触发更新事件,只会触发删除。原因如下:
REPLACE 的工作方式与 INSERT 完全相同,只是如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行。
(来自MySQL 5.0 参考手册)
我有一个使用 ON UPDATE CASCADE ON DELETE SET NULL 设置的外键,每当我对外表的主键执行 REPLACE 时,我的相关表中的外键都会设置为 NULL。