4

下面的表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?我看不出这如何导致循环 - 每次删除主表中的记录时,只应删除关系表中的相关记录。

在此处输入图像描述

4

1 回答 1

4

阅读知识库文章,其中包含以下内容...

您会收到此错误消息,因为在 SQL Server 中,一个表不能多次出现在由 DELETE 或 UPDATE 语句启动的所有级联引用操作的列表中。例如,级联引用操作树必须只有一个路径到级联引用操作树上的特定表。

要执行您想要的操作,DISPLAY_TAB_GROUPING 表必须出现两次。我建议您改用实现删除代码的存储过程。

于 2013-11-11T16:14:52.890 回答