スキーマが同じでデータが異なる 2 つのデータベースをマージするツールを開発しています。
その一部は、すべての外部キーを に変更し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
この問題は解決しません:(