前端之家收集整理的这篇文章主要介绍了
sql-server – 如何级联删除多对多表,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个3个表,看起来像这样:
在外键上我设置了级联删除.
现在,当我删除Folder表中的记录时,只删除FolderItem中的相关记录.
这是预期和正确的.
我要完成的是当我删除Folder表中的记录时,应该删除FolderItem和Item表中的相应记录.
我该如何解决这个问题?
通过添加一个触发器来删除有问题的FolderID的所有Item实例?
或者有更好的解决方案吗?
您需要确定您希望系统完全符合您的行为.您的要求听起来有点异常,可能表明
数据库架构设计存在
错误.为什么要在
删除相关
文件夹时
删除项目?如果有另一个
文件夹仍然与该项目相关,如果它是多对多关系怎么办?在这种情况下,
删除Item实际上会导致Item和FolderItem之间的外键冲突.如果Items实际上属于特定
文件夹,即一对多关系,则根本不需要FolderItem表.
我想最有可能的情况是,如果没有与之相关的其他FolderItem条目,则要删除该项.在这种情况下,触发器是适当的解决方案,但您需要确保在触发器逻辑中检查它.
原文链接:https://www.f2er.com/mssql/83838.html