首页 > 解决方案 > 删除没有引用约束的记录的方法

问题描述

我有一个表,其中包含一堆依赖项,但其中的大多数记录实际上并没有在其他地方引用。我想发出一个删除命令,但如果遇到此类记录,它不会失败 - 只需删除没有依赖关系的记录并保持其他记录不变。

此删除命令将从我的 ASP.NET Web 应用程序中调用,将来此表可能会有其他依赖项或结构更改。而且我不想每次都更改删除命令。

最快的方法是什么?

标签: sql-servertsql

解决方案


这样做的方法是只尝试删除没有引用记录的记录,例如

delete
from MyTableA
where not exists (select 1 from MyTableB B where B.MyTableAID = MyTableA.MyTableAID)
-- etc for all referencing tables

如果你把它放在一个存储过程中,每当你更新你的数据库结构时,它相对容易更新,而不需要修改你的代码。


推荐阅读