Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql级联删除_Sql_Cascading Deletes - Fatal编程技术网

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设置为已知的默认值。非常感谢。