2014-10-07 222 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