我正在開發一個工具來合併具有相同模式但不同數據的兩個數據庫。MySQL - ON更新CASCADE + foreign_key_checks = 0
它的一部分是將所有外鍵都更改爲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
但隨後相關的F外鍵不更新。我做了一個快速測試,在設置foreign_key_checks = 0後級聯不起作用。
有沒有什麼辦法可以觸發級聯,或者在沒有設置foreign_key_checks=0
的情況下執行破壞FK的行更新? UPDATE IGNORE
如果關係是複合型不解決這個問題:(
總的想法很好, – adamziel
oops我還沒寫完; 將fk字段更新爲空 - 當fk列不爲空時,這會失敗;我不想刪除整行,因爲它可能包含一些重要的數據; 似乎我可以改變這一列,並不是空的,但也許有另一種解決方案呢? – adamziel
看到我更新的帖子('附加信息'部分) – Sebas