外部キー制約によってリンクされている 2 つのテーブルがあります。ID フィールドを変更したいのですが、次のコードは外部キー制約のために失敗します。
UPDATE A SET id = 1479 WHERE id = 2103;
UPDATE B SET Aid = 1479 WHERE Aid = 2103;
これを自動的に行うように設定できることはわかってON CASCADE
いますが、このようにケースバイケースで行うにはどうすればよいでしょうか?
外部キー制約によってリンクされている 2 つのテーブルがあります。ID フィールドを変更したいのですが、次のコードは外部キー制約のために失敗します。
UPDATE A SET id = 1479 WHERE id = 2103;
UPDATE B SET Aid = 1479 WHERE Aid = 2103;
これを自動的に行うように設定できることはわかってON CASCADE
いますが、このようにケースバイケースで行うにはどうすればよいでしょうか?
外部キー チェックを無効にし、トランザクション内ですべてを実行します。
START TRANSACTION;
SET FOREIGN_KEY_CHECKS = 0;
UPDATE A SET id = 1479 WHERE id = 2103;
UPDATE B SET Aid = 1479 WHERE Aid = 2103;
SET FOREIGN_KEY_CHECKS = 1;
COMMIT;
使用する
SET FOREIGN_KEY_CHECKS=0;
更新クエリの前に。