提问人:Mark 提问时间:9/24/2008 最后编辑:ConcernedOfTunbridgeWellsMark 更新时间:3/9/2011 访问量:1267
为什么我得到这个表关系的“多个级联路径”?
Why am I getting "multiple cascade paths" with this table relationship?
问:
我的数据库中有以下表关系:
Parent
/ \
Child1 Child2
\ /
GrandChild
我正在尝试创建 FK 关系,以便父表的删除级联到子表和孙子表。对于任何一个特定的子代,它将被父级化为一个子表或其他子表,但绝不会同时同时成为这两个子表的父级。
当我尝试将 ON DELETE CASCADE 添加到 FK 关系时,将它们添加到两个子关系的“一侧”一切都很好(Parent-Child1-GrandChild 对于 Cascade Delete 很好)。但是,一旦我在关系的 Child2“端”添加 Cascade Delete,SQL 就会告诉我 FK 将导致多个级联路径。我的印象是,只有当多个 FK 指示同一个表时,才适用多个级联路径。为什么在这种情况下会出现多级联路径错误?
PS 此时的表关系很难更改,因此简单地告诉我更改表结构是没有帮助的,谢谢。
答:
4赞
devio
9/24/2008
#1
该消息表示,如果删除父记录,则有两条路径指向所有可删除的 GrandChild 记录。
修复:删除 FK 中的 ON DELETE CASCADE 选项,并为 ChildX 表创建 INSTEAD OF DELETE 触发器,删除所有孙子记录,然后删除 childX 记录本身。
评论