下面的表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.