sql级联删除

时间:2010-06-25 02:54:09

标签: sql cascading-deletes

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:10)

你有级联删除概念向后

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

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

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