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
啊,我明白了。谢谢! –