SQL Server update primary key that's also a foreign key in two tables
我需要更新记录的主键,但它也是另外两个表中的外键。 我还需要更新的主键也反映在子表中。
这是我的查询和错误:
1 2 | begin tran update question set questionparent = 10000, questionid= 10005 where questionid = 11000; |
1 | Error 9/4/2009 10:04:49 AM 0:00:00.000 SQL Server Database Error: The UPDATE statement conflicted with the REFERENCE constraint"FK_GoalRequirement_Question". The conflict occurred in database"numgmttest", table"dbo.GoalRequirement", column 'QuestionID'. 14 0 |
我不记得该怎么做这就是为什么我在这里。 有帮助吗?
你的人际关系是否正常
1 | ON UPDATE CASCADE |
如果他们正在更改主表中的键将更新外键。
例如
1 2 3 4 | ALTER TABLE Books ADD CONSTRAINT fk_author FOREIGN KEY (AuthorID) REFERENCES Authors (AuthorID) ON UPDATE CASCADE |
你可以:
在事务中完成所有操作并确保如果事务失败,则将其正确回滚并仍然强制执行FK约束。
但是......为什么你需要改变PK?我希望这是一个很少执行的动作(遗留数据导入或类似的东西)。
如果要以图形方式设置Cascade规则,请在SQL Management Studio上设置Cascade Rule
关闭并保存,完成!
(试过SQL 2008)
由于我不太自信禁用FK约束,我也更喜欢:
优点:在此过程中没有违反约束。
转到每个子表的外键关系以及插入和更新规范更改删除和更新规则以级联。这可能对你有所帮助