忽略删除行,如果存在约束冲突,则继续

时间:2018-11-08 18:20:39

标签: sql-server tsql

我有一个简单的DELETE语句:DELETE FROM [TableA] WHERE Id!= 123 这应该删除1000行。

但是,TableB具有一个外键约束,该约束引用了[TableA] .Id 。上面的DELETE语句将遇到错误:DELETE语句与TableB中的引用约束冲突。

是否有一种方法可以忽略该行并继续进行操作,而不是将其弄错呢?换句话说,跳过在TableA中删除该行?我现在只删除999行,而不是删除1000行?

1 个答案:

答案 0 :(得分:0)

只需检查FK

DELETE 
FROM [TableA] a
WHERE Id != 123 
AND not exists (select 1 from [TableB] where TableB.FK = a.ID)