在两个表中更新作为主键的同时也是外键的 SQL Server
在两个表中更新作为主键的同时也是外键的 SQL Server
我需要更新一条记录的主键,但它同时也是其他两个表中的外键。并且我需要在子表中反映更新后的主键。
这是我的查询和错误信息:
begin tran update question set questionparent = 10000, questionid= 10005 where questionid = 11000;
Error 9/4/2009 10:04:49 AM 0:00:00.000 SQL Server 数据库错误:更新语句与参考约束"FK_GoalRequirement_Question"冲突。冲突发生在数据库"numgmttest"的表"dbo.GoalRequirement"的"QuestionID"列中。 14 0
我不记得如何处理这个问题,所以才来这里寻求帮助。有人能帮忙吗?
如果你想以图形方式设置级联规则,可以在SQL Management Studio中设置级联规则:
- 以设计模式打开表
- 点击顶部工具栏上的“关系”按钮
- 逐个选择所需的外键关系
- 右侧 - 展开“插入”或“更新”规范
- 将“更新”规则更改为“级联”
关闭并保存,完成!
(在SQL 2008上尝试过)
问题的原因:
- 主键同时也是外键,存在两个表之间的关联关系。
- 需要更新主键的值,但是由于存在外键约束,无法直接修改主键的值。
解决方法:
- 使用SQL Management Studio以图形方式设置级联规则。
- 将更新规则更改为“级联”,这样当主键的值改变时,与之关联的外键也会被自动更新。
请注意,以上解决方法是在SQL 2008中尝试过的,如果使用其他版本的SQL Server,可能会有所不同。