【发布时间】:2015-07-11 01:41:41
【问题描述】:
SQL Server 中有没有一种方法可以删除每一行可删除的行(没有阻止删除的外键),而不必知道每个外键引用?
我知道我可以用WHERE ID NOT IN (..) 或LEFT OUTER JOIN 来检查每个约束,但是有没有类似的东西
DELETE * FROM MyTable WITH CONTINUE_ON_ERROR
这会简单地尝试删除每条记录,如果发生错误忽略它并继续下一条记录而不回滚事务?
【问题讨论】:
-
不,没有这样的功能。如果你想删除,你的工作确保这些行没有从某处被引用
-
似乎是一个奇怪的请求。您怎么知道您没有删除今天未使用但将来可能需要它的 FK?
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
"有没有办法...?" 是的。有内置的或简单的方法吗?不,您需要为此编写自己的代码..
标签: sql-server tsql transactions delete-row sql-delete