1

SQL 级联删除相当新。我想知道当涉及到孩子时,级联删除是如何工作的。所以说我有一个桌子情况,比如:

ParentTable ==Cascade==> ChildTable ==NoCascade==> GrandChildTable

孙子也会被删吗?我是否需要在子表中指定关闭级联删除?我正在使用 Fluent API 将父 ParentTable 的级联删除设置为带有 WillCascadeOnDelete(true) 的 ChildTable,我应该在 ChildTable 上设置 WillCascadeOnDelete(false),这是必要的吗?我无法删除 GrandChildTable 的原因是因为它是域表。

谢谢,马特

4

1 回答 1

2

孙子也会被删吗?

不,如果您的数据库系统没有完全错误,或者说没有完全实现(这与实体框架没有太大关系),则不会。如果可能的话,您可以很容易地破坏数据完整性,违背这些外键约束的意图。

如果您希望在删除子项时删除孙子项,则需要对从 ChildTable 到 GrandChildTable 的 FK 关系附加一个 DELETE CASCADE 约束。对子级的 DELETE 操作是来自该子级的显式 DELETE 还是来自父级的级联删除并不重要。

于 2013-04-15T14:10:56.477 回答