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

王林
發布: 2023-05-27 17:19:13
轉載
2912 人瀏覽過

今天在使用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
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!