更新一个表中的主键,该表是另一个表中的外键

时间:2013-12-08 07:24:39

标签: mysql sql database

我有一个表,它的主键是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, 但我不能因为这个字段与另一个表有关。

可以改变所有这些吗?

1 个答案:

答案 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选项,以便在父项上更新主键    表它将级联到子表

相关问题