我需要在2个表上更改PK / FK(添加10000)的值。我如何告诉所涉及的两个表,他们不应该关心更新期间的参照完整性,而是要关心。如果我不需要,我不想放弃并重建关系。
答案 0 :(得分:2)
你的FK应该有一个“ON UPDATE CASCADE”选项。
ALTER TABLE child CHANGE myfkconst FOREIGN KEY id REFERENCES parent (id) ON UPDATE CASCADE;
(或类似的东西。不是100%确定语法)
然后你可以做到
UPDATE parent SET id = id + 10000 WHERE id = something
并且子表将自动更新。
答案 1 :(得分:2)
您可能希望通过执行以下命令来禁用数据库中的所有约束:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all";
然后用以下方式重新打开它们:
EXEC sp_msforeachtable @command1="print '?'",
@command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all";
来源:Stack Overflow - Can foreign key constraints be temporarily disabled using TSQL?
答案 2 :(得分:2)
This link描述了如何临时禁用约束。我还没有测试过。
-- disable constraint
ALTER TABLE table_name NOCHECK CONSTRAINT constraint_name
-- enable constraint
ALTER TABLE table_name CHECK CONSTRAINT constraint_name
答案 3 :(得分:0)
抱歉,你必须这样做。没有选择。