我有一个表,它的主键是5个表中的外键。我需要更改此主键字段的值。查询是什么?
Table1 >> fields: tbl1ID(pk, bigint), Desc(nvarchar(50))
Table2 >> fields: tbl2ID(pk, bigint),tbl1ID(fk, bigint), Desc(nvarchar(50))
Table3 >>....
.
.
.
我已设置tbl1ID = 1,现在需要更改它,如tbl1ID = 100001, 但我不能因为这个字段与另一个表有关。
可以改变所有这些吗?
答案 0 :(得分:1)
您可以通过临时设置foreign_key_checks = 0来完成此操作 你的会议。
SET FOREIGN_KEY_CHECKS = 0;
UPDATE TABLE_A INNER JOIN TABLE_B ON TABLE_B.PKID = TABLE_A.PKID
SET TABLE_B.PKID = 'NEW_VALUE', TABLE_A.PKID = 'NEW_VALUE'
WHERE TABLE_A.PKID = 'OLD_VALUE';
另一个选项是使用ON UPDATE配置外键 CASCADE选项,以便在父项上更新主键 表它将级联到子表