在另一个表中用fk删除SQL行

时间:2018-09-19 11:02:36

标签: sql-server tsql foreign-keys

我有一个uni数据库示例,需要在其中更新新的部门。我有下表

表1(部门)具有以下列:

ID   | NAME | SCHOOL | ACTIVE | SNAPSHOT
860  | SOF  |  20    |   1    | NULL
861  | CS   |  20    |   1    | NULL

ID为PK,整数,非空

表2(用户)具有以下列:

ID   | EMPNO | FORENAME | SURNAME | DEPT
1495 | e3456 | Parker   | Sal     |  860

部门是FK

问题:

表1中的两个部门应更新为单个部门,如下所示:

ID   | NAME                | SCHOOL | ACTIVE | SNAPSHOT
860  | School of Sciences  |  20    |   1    | NULL

我正在使用以下sql命令:

DELETE FROM Department WHERE ID = 861

并收到以下错误:

  

消息547,级别16,状态0,第10行   DELETE语句与REFERENCE约束“ FK__User__Dept”冲突。在数据库“ uniDB”的表“ dbo.User”的列“ Dept”中发生了冲突。

由于第三个表具有FK约束,因此我无法使用同一命令从表2(用户)中删除部门ID 861,因此,我会收到与上述相同的错误。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

更改链接,然后删除:

UPDATE u SET
  Dept = 860
FROM User u
WHERE u.Dept = 861

DELETE d
FROM Department d
WHERE d.ID = 861