【问题标题】:Why am I getting "multiple cascade paths" with this table relationship?为什么我会通过此表关系获得“多个级联路径”?
【发布时间】:2008-09-23 19:36:59
【问题描述】:

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

          Parent
          /    \
    Child1      Child2
        \        /
        GrandChild

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

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

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

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    该消息的意思是,如果您删除父记录,则有两条路径可通向所有可删除的 GrandChild 记录。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      相关资源
      最近更新 更多