即使使用约束也会更新

时间:2015-03-10 12:31:43

标签: sql-server sql-update foreign-keys primary-key sql-server-2014

我试图更新SQL Server 2014数据库中的值(小拼写错误)。

我喜欢这个:

update t_Table set funID = 'References' where funID = 'Referencies'

执行此操作时,我收到错误

The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_t_Table_Language_t_Table". The conflict occurred in database "db", table "dbo.t_Table".

如果更新外键,我会收到类似的错误。

有没有办法同时更新所有值? 我有一个模糊的记忆,有人在管理工作室中展示了这样做的方法,但我不记得如何。

1 个答案:

答案 0 :(得分:1)

在外键上启用更新级联

ALTER TABLE t_Table_Language DROP CONSTRAINT FK_t_Table_Language_t_Table
ALTER TABLE t_Table_Language ADD CONSTRAINT FK_t_Table_Language_t_Table
FOREIGN KEY (funID) REFERENCES t_Table(funID)
ON UPDATE CASCADE

编辑: 或者反过来说,我不确定哪个表有外出键

ALTER TABLE t_Table DROP CONSTRAINT FK_t_Table_Language_t_Table
ALTER TABLE t_Table ADD CONSTRAINT FK_t_Table_Language_t_Table
FOREIGN KEY (funID) REFERENCES t_Table_Language(funID)
ON UPDATE CASCADE

然后对引用的表(主表)进行更新。

UPDATE t_Table_Language 
SET funID = 'References'
WHERE funID = 'Referencies'