gpt4 book ai didi

sql - CASCADE 多对多自引用表中的删除

转载 作者:行者123 更新时间:2023-12-01 01:04:35 31 4
gpt4 key购买 nike

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

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

如何为两个关系设置 ON CASCADE DELETE?我不明白这如何导致循环 - 每次删除主表中的记录时,只应删除关系表中的相关记录。

enter image description here

最佳答案

阅读 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 表必须出现两次。我建议您使用一个存储过程来实现您的删除代码。

关于sql - CASCADE 多对多自引用表中的删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910621/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com