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

前端之家收集整理的这篇文章主要介绍了sql – CASCADE在多对多自引用表中删除前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
下面的表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表必须出现两次.我建议您使用实现删除代码的存储过程.

猜你在找的MsSQL相关文章