我正在开发一个工具来合并两个具有相同架构但不同数据的数据库。
其中一部分是将所有外键更改为ON UPDATE CASCADE
,然后递增所有主键以避免冲突并保持外键指针正常工作。
我的问题是,有时有一些孤立的行带有损坏的 FK,所以下面的查询:
UPDATE table set pk = pk + 1000000
像这样失败:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
......(尽管我什至没有考虑触摸外键列!)
我想通过以下方式关闭它:
Set foreign_key_checks=0
但随后相关的外键不会更新。我做了一个快速测试,设置foreign_key_checks = 0后级联不起作用。
有什么方法可以触发级联,或者在没有设置的情况下更新 FK 损坏的行foreign_key_checks=0
?UPDATE IGNORE
不能解决这个问题:(