2014-10-07 304 views
0

当表中的外键有ON DELETE CASCADE设置给他们,这是否意味着“删除被允许”或这是否意味着SQL Server将实际执行所有关联的删除时记录被删除?SQL Server 2008删除级联

换句话说,如果我有一组使用ON DELETE CASCADE的外键链接在一起的表,我是否必须去每个单独的表,并明确执行删除功能或将SQL Server为我做?

+0

杜佩https://stackoverflow.com/questions/13444859/sql-on-delete-cascade-which-way-does-the-deletion-occur – JiggsJedi 2014-10-07 14:52:13

回答

1

使用ON DELETE CASCADE选项指定是否希望在父表中删除相应的行时,是否要在子表中删除行。如果您未指定级联删除,则数据库服务器的默认行为会阻止您在其他表引用表时删除表中的数据。

接受来自IBM站点。我想这意味着是的! :)

1

这意味着如果您删除FK关系中的父项,SQL Server将自动删除所有子项。

+0

的哪个表是父母和哪个孩子在这种关系中?从我目前看到的,sql server不会自动删除这些子项。 – user331905 2014-10-07 15:06:48

+0

与关系中的主键关联的表是父项。具有引用其他表的主键的外键的表是孩子。 – 2014-10-07 15:28:54

1

这意味着当一个Parent行被删除(杀死)时,在Child表中没有孤儿行应该保持活动状态。父行的所有孩子也都被杀死(删除)。如果这些孩子中的任何一个有孙子(在另一个表中通过另一个外键),并且存在ON DELETE CASCADE定义,这些也应该被杀死(以及所有后代,只要存在级联效应)。

把它从:https://dba.stackexchange.com/questions/44956/good-explanation-of-cascade-on-delete-update-behavior