2013-12-16 107 views

回答

29

ON DELETE CASCADE和ON DELETE RESTRICT是外鍵屬性,您可以在創建兩個表格之間的關係時設置它們。

如果將關係設置爲ON DELETE CASCADE,意味着當您在父表上運行DELETE語句時,它將自動從CHILD表中刪除所有相應的行,但是RESTRICT(這是缺省外鍵關係行爲)是當您嘗試從父表中刪除一行並且具有相同標識的子表中存在一行時,它將無法投訴現有的子行。

無論哪種方式,您不需要在DELETE子句中提及任何內容。

我也寫了一篇博客文章在這裏更詳細的DELETE和UPDATE命令不同的規則:

https://koukia.ca/sql-server-foreign-key-update-and-delete-rules-556cf09117fe

+0

因此,當我說ON DELETE RESTRICT時,從父表中刪除的行不會從其他表中刪除? – user3102872

+2

當它設置爲RESTRICT時,沒有任何行(父或子)將被刪除,並且您將看到並顯示錯誤。如果您希望刪除父行而不管子行是否存在,則應該使用NO ACTION。 – Aram

+1

所以,** Cascade **意味着當我刪除父母時,孩子也會被刪除。 **限制**給我一個錯誤,當我嘗試刪除。 **沒有行動**當我刪除父母時,並沒有改變孩子的任何事情。 **設置默認**將孩子設置爲默認值,當我刪除父母。 **設置爲空**將父項刪除時將子項設置爲null。我對嗎?非常感謝你 – user3102872

0

權利,使這些ON DELETE和ON UPDATE適用於父表/行。 NO ACTION和RESTRICT的原因是一樣的,因爲如果父母不存在,你就不能與孩子和父母建立關係。

4

有三種類型的上刪除與外鍵

  1. 相關ON DELETE CASCADE:當數據從父表中刪除,自動從子表(外鍵表)刪除的數據。
  2. On刪除set Null:當從父表中刪除數據時,外鍵關聯單元在子表中將爲空。
  3. 關於刪除限制:從父表中刪除數據時,如果存在與子表關聯的外鍵,則會發生錯誤,您無法刪除該記錄。
相關問題