1. 程式人生 > >Mysql外來鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL

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,也是首先先檢查外來鍵;

下面舉一個小例子幫助理解:
(1)在資料庫bookshop中我新建了表a如下:

這裡寫圖片描述

設定外來鍵:
這裡寫圖片描述

(2)在資料庫bookshop中我新建了表b如下:

這裡寫圖片描述

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

這裡寫圖片描述

這裡寫圖片描述

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