Mysql外鍵設置中的CASCADE、NO ACTION、RESTRICT、SET NULL

今天在使用Navicat for mysql設計表時,在設置外鍵的時候,刪除時和更新時兩列有四個值可以選擇:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全親自試瞭一遍,它們的區別如下:

  • CASCADE:父表delete、update的時候,子表會delete、update掉關聯記錄;
  • SET NULL:父表delete、update的時候,子表會將關聯記錄的外鍵字段所在列設為null,所以註意在設計子表時外鍵不能設為not null;
  • RESTRICT:如果想要刪除父表的記錄時,而在子表中有關聯該父表的記錄,則不允許刪除父表中的記錄;
  • NO ACTION:同 RESTRICT,也是首先先檢查外鍵;
空、RESTRICT、NO ACTION 刪除:從表記錄不存在時,主表才可以刪除,刪除從表,主表不變。
更新:從表記錄不存在時,主表菜可以更新,更新從表,主表不變。
CASCADE 刪除:刪除主表時自動刪除從表。刪除從表,主表不變。
更新:更新主表時自動更新從表。更新從表,主表不變。
SET NULL 刪除:刪除主表時自動更新從表為NULL,刪除從表,主表不變。
更新:更新主表時自動更新從表值為NULL。更新從表,主表不變。

下面舉一個小例子幫助理解:

(1)在數據庫bookshop中我新建瞭表a如下:

這裡寫圖片描述

設置外鍵:

這裡寫圖片描述

(2)在數據庫bookshop中我新建瞭表b如下:

這裡寫圖片描述

(3)給a、b表插入記錄如下:

這裡寫圖片描述

這裡寫圖片描述

這裡:a表id2字段為外鍵字段,參看b表的主鍵,所以b表是父表,a表是子表;然後分別在設置a表外鍵的時候設置不同的四個值,就可以得出我上述的結論。

到此這篇關於Mysql外鍵設置中的CASCADE、NO ACTION、RESTRICT、SET NULL的文章就介紹到這瞭,更多相關Mysql CASCADE NO ACTION RESTRICT SET NULL內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: