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

Why am I getting "multiple cascade paths" with this table relationship?

提问人:Mark 提问时间:9/24/2008 最后编辑:ConcernedOfTunbridgeWellsMark 更新时间:3/9/2011 访问量:1267

问:

我的数据库中有以下表关系:

          Parent
          /    \
    Child1      Child2
        \        /
        GrandChild

我正在尝试创建 FK 关系,以便父表的删除级联到子表和孙子表。对于任何一个特定的子代,它将被父级化为一个子表或其他子表,但绝不会同时同时成为这两个子表的父级。

当我尝试将 ON DELETE CASCADE 添加到 FK 关系时,将它们添加到两个子关系的“一侧”一切都很好(Parent-Child1-GrandChild 对于 Cascade Delete 很好)。但是,一旦我在关系的 Child2“端”添加 Cascade Delete,SQL 就会告诉我 FK 将导致多个级联路径。我的印象是,只有当多个 FK 指示同一个表时,才适用多个级联路径。为什么在这种情况下会出现多级联路径错误?

PS 此时的表关系很难更改,因此简单地告诉我更改表结构是没有帮助的,谢谢。

SQL 服务器

评论


答:

4赞 devio 9/24/2008 #1

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

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