为什么我得到这个表关系的“多重级联路径”?


0

我在我的数据库中的表关系:

  Parent 
     / \ 
    Child1  Child2 
     \  /
     GrandChild 

我试图创建FK关系,这样父表级联到两个孩子和孙子表删除。对于任何一个特定的granchild,它将或者是一个或另一个子表的父代,但从不同时。

当我试图将ON DELETE CASCADE添加到FK关系时,一切都很好,将它们添加到两个孩子的一个“边”(Parent-Child1-GrandChild适用于级联删除)。但是,只要在关系的Child2“端”添加级联删除,SQL就会告诉我FK将导致多个层叠路径。我的印象是多个级联路径只适用于多个FK表示同一个表的情况。为什么我会在这种情况下获得多个级联路径错误?

PS此时表格关系很难改变,所以简单地告诉我改变我的表格结构不会有帮助,谢谢。

4

该消息表示如果删除父记录,则有两条路径导致所有可删除的GrandChild记录。

修复:删除FK中的ON DELETE CASCADE选项,并为ChildX表创建INSTEAD OF DELETE触发器,删除所有孙级记录,然后childX记录它们自己。