首頁  >  文章  >  資料庫  >  Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼

Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼

王林
王林轉載
2023-05-27 17:19:133016瀏覽

今天在使用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,也是先檢查外鍵;

##刪除:從表格記錄不存在時,主表才可以刪除,刪除從表,主表不變。 CASCADE刪除:刪除主表時自動刪除從表。刪除從表,主表不變。 SET NULL刪除:刪除主表時自動更新從表為NULL,刪除從表,主表不變。
#空、RESTRICT、NO ACTION更新:從表記錄不存在時,主表菜可以更新,更新從表,主表不變。
更新:更新主表時自動更新從表。更新從表,主表不變。
更新:更新主表時自動更新從表值為NULL。更新從表,主表不變。
下面舉一個小範例幫助理解:

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

Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼

#設定外鍵:

Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼

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

Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼

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

Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼

Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼

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

以上是Mysql外鍵設定中的CASCADE、NO ACTION、RESTRICT、SET NULL是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除