如何删除外键行sql server?

时间:2014-05-13 12:43:38

标签: sql-server

我有表A和表B, 表A在B主键上使用外键引用, 当我从A中删除行时我想要删除A中用外键引用的B中的行,我该怎么办?级联删除不起作用,因为我不知道我要删除哪些B行我只知道A表行

1 个答案:

答案 0 :(得分:1)

是否启用了级联删除,以便在删除B行时自动删除A行?

在这种情况下,您可以简单地执行以下操作:

DELETE B FROM A INNER JOIN B ON A.ForeignKey = B.PrimaryKey
WHERE <some condition on A or B or both>

级联删除将负责删除A中所有涉及B中记录的记录,这些记录即将被删除。

如果没有级联删除,则需要将上述内容更改为SELECT语句,在该语句中将主键从B输出到临时表中。然后使用此临时表删除A中的所有记录,这些记录引用这些B主键。然后最后使用临时表从B中删除记录。