2
我有兩個通過外鍵約束鏈接的表。我想換一個ID字段,但下面的代碼外鍵約束失敗原因:MySQL:如何更改具有外鍵約束的字段?
UPDATE A SET id = 1479 WHERE id = 2103;
UPDATE B SET Aid = 1479 WHERE Aid = 2103;
我知道我可以設置ON CASCADE
自動做到這一點,但我怎麼能做到這一點的情況下,由這種情況下的基礎?
我有兩個通過外鍵約束鏈接的表。我想換一個ID字段,但下面的代碼外鍵約束失敗原因:MySQL:如何更改具有外鍵約束的字段?
UPDATE A SET id = 1479 WHERE id = 2103;
UPDATE B SET Aid = 1479 WHERE Aid = 2103;
我知道我可以設置ON CASCADE
自動做到這一點,但我怎麼能做到這一點的情況下,由這種情況下的基礎?
通過disabling foreign key checks並通過在事務中運行所有內容。
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;
您的更新查詢之前。
我想我最好去閱讀交易然後......從來沒有需要使用它們。 –
您不需要該事務,但連接可能會在兩個更新語句之間掉線。那麼你將很難'重建'你的鑰匙;) – Xandl
啊,我明白了。謝謝! –