加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – CASCADE在多对多自引用表中删除

发布时间:2021-01-08 07:08:04 所属栏目:MsSql教程 来源:网络整理
导读:下面的表DISPLAY_TAB是一个自引用表,可以包含父选项卡和子选项卡.父选项卡可以有多个子选项卡,子选项卡可以属于多个父选项卡. 我想在主表和关系表DISPLAY_TAB_GROUPING之间建立一个CASCADE DELETE关系,这样当删除父或子选项卡时 – 关系也会自动删除(只是

下面的表DISPLAY_TAB是一个自引用表,可以包含父选项卡和子选项卡.父选项卡可以有多个子选项卡,子选项卡可以属于多个父选项卡.

我想在主表和关系表DISPLAY_TAB_GROUPING之间建立一个CASCADE DELETE关系,这样当删除父或子选项卡时 – 关系也会自动删除(只是关系,而不是实际的选项卡记录).所以我在DISPLAY_TAB_GROUPING上为字段TAB_ID_R_1和TAB_ID_R_2表创建一个FOREIGN KEY约束,引用DISPLAY_TAB表中的TAB_ID.并且它工作正常,当我为其中一个关系添加ON DELETE CASCADE时它工作正常,但是当我为它们尝试它时 – 它会抛出一个错误,这个“可能导致循环或多个级联路径”.

如何为两种关系设置ON CASCADE DELETE?我不知道这会如何导致循环 – 每次删除主表中的记录时,只应删除关系表中的相关记录.

解决方法

阅读 this KB文章,其中包括以下内容……

You receive this error message because in SQL Server,a table cannot
appear more than one time in a list of all the cascading referential
actions that are started by either a DELETE or an UPDATE statement.
For example,the tree of cascading referential actions must only have
one path to a particular table on the cascading referential actions
tree.

要做你想做的事,DISPLAY_TAB_GROUPING表必须出现两次.我建议您使用实现删除代码的存储过程.

(编辑:温州站长网)

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

    热点阅读