繁体   English   中英

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

[英]Update primary key in one table which is foreign key in another table

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

是否有可能改变所有这些?

您可以通过在会话中临时设置 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 选项配置外键,这样如果主键在父表上更新,它将级联到子表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM