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