sql级联删除

Jas*_*son 4 sql cascading-deletes

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

ITEMX                 | ITEMY
------------------    | ------------
ID    FKID_ITEMY      | ID
1     1               | 1
2     1               |
Run Code Online (Sandbox Code Playgroud)

在FKID_ITEMY上有一个级联删除,这样如果我在ITEMX中删除一行,ITEMY中的相应项将被删除.我的问题是:

ITEMX中删除行ID 1是否会删除ITEMY中的行ID 1?

或者只删除ITEMX中的行ID 1,因为行ID 2仍在ITEMY中引用行ID 1?

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

Bil*_*win 10

你有向后级联删除的概念.

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

级联行为会影响在ITEMY中引用的行被删除时会发生什么.如果删除ID = 1的ITEMY,它将删除ITEMX中引用该行的两行.

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