开发者社区> 问答> 正文

为什么通过这种表关系获得“多个级联路径”?

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

Parent
          /    \
    Child1      Child2
        \        /
        GrandChild

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

当我尝试在FK关系中添加DELETE CASCADE时,将它们添加到两个孩子的一个“边”中就可以了(Parent-Child1-GrandChild对于“级联删除”是很好的)。但是,一旦我在关系的Child2“边”上添加了Cascade Delete,SQL就会告诉我FK将导致多个级联路径。我的印象是,仅当多个FK表示SAME表时,才应用多个级联路径。在这种情况下,为什么会出现多个级联路径错误?

PS此时的表关系将很难更改,因此,简单地告诉我更改表结构将无济于事,谢谢。

展开
收起
心有灵_夕 2019-12-29 13:17:50 5550 0
1 条回答
写回答
取消 提交回答
  • 该消息表示,如果删除父记录,则有两条路径可导致所有可删除的GrandChild记录。

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

    2019-12-29 13:18:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
事务、全局索引、透明分布式 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载