5

我有一个关于级联删除和外键引用的问题:让我们假设下表:

ITEMX                 | ITEMY
------------------    | ------------
ID    FKID_ITEMY      | ID
1     1               | 1
2     1               |

FKID_ITEMY 上有级联删除,因此如果我删除 ITEMX 中的一行,则 ITEMY 中的相应项目将被删除。我的问题是:

ITEMX中第1行的删除会删除ITEMY中第1行吗?

还是只删除 ITEMX 中的第 1 行,因为第 2 行仍然引用 ITEMY 中的第 1 行?

换句话说,我希望在没有更多引用时删除 ITEMY 的第 1 行。级联删除会实现这一点吗?

4

1 回答 1

11

您已经了解了向后级联删除的概念。

即使您使用级联删除选项声明 FKID_ITEMY,如果您删除 ID=1 的 ITEMX,也不会发生任何事情。

如果 ITEMY 中的引用行被删除,级联行为会影响发生的情况。如果删除 ID=1 的 ITEMY,它将删除 ITEMX 中引用该行的两行。

您在从属表中声明外键的级联行为,因为您可能有另一个从属表 ITEMZ,并且您希望它的行为不同。例如,如果您尝试删除 ITEMY 中的一行,那么如果 ITEMZ 中存在任何引用行,您希望将其取消。

于 2010-06-25T03:03:01.680 回答