在MySQL REPLACE命令期间,MySQL InnoDB ON UPDATE CASCADE约束是否会正确更新?

时间:2010-03-26 00:44:37

标签: mysql replace innodb cascade onupdate

如果我的表B具有对表A的外键引用(设置为ON UPDATE CASCADE)并且我运行

LOAD DATA INFILE file.txt REPLACE INTO TABLE A;

命令,引用会正确更新吗?

请注意,我不是在谈论ON DELETE CASCADE;我知道如果我有这个设置,REPLACE命令将删除表B中的记录。

2 个答案:

答案 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索引   在新行之前删除旧行   插入。

     

(来自MySQL 5.0 Reference Manual

我有一个使用ON UPDATE CASCADE ON DELETE SET NULL设置的外键,每当我对外表的主键执行REPLACE时,我相关表中的外键都设置为NULL。