sql-server - 删除没有引用约束的记录的方法
问题描述
我有一个表,其中包含一堆依赖项,但其中的大多数记录实际上并没有在其他地方引用。我想发出一个删除命令,但如果遇到此类记录,它不会失败 - 只需删除没有依赖关系的记录并保持其他记录不变。
此删除命令将从我的 ASP.NET Web 应用程序中调用,将来此表可能会有其他依赖项或结构更改。而且我不想每次都更改删除命令。
最快的方法是什么?
解决方案
这样做的方法是只尝试删除没有引用记录的记录,例如
delete
from MyTableA
where not exists (select 1 from MyTableB B where B.MyTableAID = MyTableA.MyTableAID)
-- etc for all referencing tables
如果你把它放在一个存储过程中,每当你更新你的数据库结构时,它相对容易更新,而不需要修改你的代码。
推荐阅读
- fiware-orion - Orion 上下文代理性能测试
- python - 如何在本地图像上对 python 的 scikit-image 运行椭圆检测?
- javascript - 为什么 jquery 没有设置我的显示 css 值?
- active-directory - 限制 Kerberos TGT 的使用
- c# - C# - 从我添加为项目引用的 NET .dll 文件定义事件
- react-native - React Native 声称我没有正确导入/导出
- visual-studio - 将 Visual Studio 输出更改为 System32 时出现链接器错误
- reactjs - 可排序的标题语义 UI
- javascript - 从具有零个或 1 个条目的 Map 中获取值?
- python - Groupby 并选择每个组的第一个、第二个和第四个成员?