Sql server 2008 如果主键也是另一个表的外键,如何更新它?
我有一个表tableA,它有一个列myID。myID是tableA中的主键,也是tableB的外键 当我试图更新表a中某个特定记录的myID时:Sql server 2008 如果主键也是另一个表的外键,如何更新它?,sql-server-2008,Sql Server 2008,我有一个表tableA,它有一个列myID。myID是tableA中的主键,也是tableB的外键 当我试图更新表a中某个特定记录的myID时: update tableA set myID = 123456 where myID= 999999 我得到了这个错误: UPDATE语句与外键约束冲突 “tableA_FK00”。数据库“mydatabase”表中发生冲突 “表A”,第“myID”列 我已经将myID的更新规则设置为“Cascade”,并将外键约束强制为“No”,但仍然无法更新。我
update tableA
set myID = 123456
where myID= 999999
我得到了这个错误:
UPDATE语句与外键约束冲突
“tableA_FK00”。数据库“mydatabase”表中发生冲突
“表A”,第“myID”列
我已经将myID的更新规则设置为“Cascade”,并将外键约束强制为“No”,但仍然无法更新。我应该如何继续?尝试以下步骤:
- 暂时禁用FK约束(
)ALTER TABLE tableA WITH NOCHECK 约束全部
- 更新您的主键
- 更新外键以匹配主键更改
- 启用反向强制FK约束
update tableA
set myID = 123456
where myID= 999999
为什么你需要更新你的PK?这里似乎有些事情做得不好。请查看此帖子:在存在级联更新规则的情况下,主键的任何更改/更新都会反映到外键。在这种情况下,不必禁用外键约束。