加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何级联删除多对多表

发布时间:2021-02-02 23:03:30 所属栏目:MsSql教程 来源:网络整理
导读:我有一个3个表,看起来像这样: 在外键上我设置了级联删除. 现在,当我删除Folder表中的记录时,只删除FolderItem中的相关记录. 这是预期和正确的. 我要完成的是当我删除Folder表中的记录时,应该删除FolderItem和Item表中的相应记录. 我该如何解决这个问题? 通

我有一个3个表,看起来像这样:

在外键上我设置了级联删除.
现在,当我删除Folder表中的记录时,只删除FolderItem中的相关记录.

这是预期和正确的.

我要完成的是当我删除Folder表中的记录时,应该删除FolderItem和Item表中的相应记录.

我该如何解决这个问题?
通过添加一个触发器来删除有问题的FolderID的所有Item实例?
或者有更好的解决方案吗?

解决方法

您需要确定您希望系统完全符合您的行为.您的要求听起来有点异常,可能表明数据库架构设计存在错误.为什么要在删除相关文件夹时删除项目?如果有另一个文件夹仍然与该项目相关,如果它是多对多关系怎么办?在这种情况下,删除Item实际上会导致Item和FolderItem之间的外键冲突.如果Items实际上属于特定文件夹,即一对多关系,则根本不需要FolderItem表.

我想最有可能的情况是,如果没有与之相关的其他FolderItem条目,则要删除该项.在这种情况下,触发器是适当的解决方案,但您需要确保在触发器逻辑中检查它.

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读