我有一个关于级联删除和外键引用的问题: 我们假设以下表格:
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。级联删除会实现这个吗?
答案 0 :(得分:10)
你有级联删除概念向后。
即使您使用级联删除选项声明FKID_ITEMY,如果删除ID = 1的ITEMX也不会发生任何事情。
级联行为会影响在ITEMY中引用的行被删除时会发生什么。如果删除ID = 1的ITEMY,它将删除ITEMX中引用该行的两行。
您在依赖表中声明外键上的级联行为,因为您可能有另一个从属表ITEMZ,并且您希望它的行为方式不同。例如。如果您尝试删除ITEMY中的行,那么如果ITEMZ中存在任何引用行,您希望取消该行。