sql级联删除
我有一个关于级联删除和外键引用的问题: 让我们假设下表:sql级联删除,sql,cascading-deletes,Sql,Cascading Deletes,我有一个关于级联删除和外键引用的问题: 让我们假设下表: ITEMX | ITEMY ------------------ | ------------ ID FKID_ITEMY | ID 1 1 | 1 2 1 | FKID_ITEMY上有一个级联删除,因此如果我删除ITEMX中的一行,ITEMY中相应的项将被删除。我的问题是: 删除ITEMX中的行ID 1是否会删
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。级联删除会实现这一点吗?您已经有了向后级联删除的概念 即使使用级联删除选项声明FKID_ITEMY,如果删除ID=1的ITEMX,也不会发生任何事情 级联行为会影响删除ITEMY中引用的行时发生的情况。如果删除ID=1的ITEMY,它将删除ITEMX中引用该行的两行
您可以在依赖表中的外键上声明级联行为,因为您可以有另一个依赖表ITEMZ,并且希望它的行为有所不同。例如,如果您试图删除ITEMY中的一行,那么如果ITEMZ中存在任何引用行,则您希望取消该行。我是这么想的,但很高兴得到确认。我们的模式有点古怪,但出于商业原因,我们不得不这样做。相反,我将把级联放在外键关系上,并在ITEMY中将FKID_ITEMY设置为已知的默认值。非常感谢。