Mysql外鍵設(shè)置中的CASCADE、NO ACTION、RESTRICT、SET NULL
今天在使用Navicat for mysql設(shè)計表時,在設(shè)置外鍵的時候,刪除時和更新時兩列有四個值可以選擇:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全親自試了一遍,它們的區(qū)別如下:
- CASCADE:父表delete、update的時候,子表會delete、update掉關(guān)聯(lián)記錄;
- SET NULL:父表delete、update的時候,子表會將關(guān)聯(lián)記錄的外鍵字段所在列設(shè)為null,所以注意在設(shè)計子表時外鍵不能設(shè)為not null;
- RESTRICT:如果想要刪除父表的記錄時,而在子表中有關(guān)聯(lián)該父表的記錄,則不允許刪除父表中的記錄;
- NO ACTION:同 RESTRICT,也是首先先檢查外鍵;
| 空、RESTRICT、NO ACTION | 刪除:從表記錄不存在時,主表才可以刪除,刪除從表,主表不變。 更新:從表記錄不存在時,主表菜可以更新,更新從表,主表不變。 |
| CASCADE | 刪除:刪除主表時自動刪除從表。刪除從表,主表不變。 更新:更新主表時自動更新從表。更新從表,主表不變。 |
| SET NULL | 刪除:刪除主表時自動更新從表為NULL,刪除從表,主表不變。 更新:更新主表時自動更新從表值為NULL。更新從表,主表不變。 |
下面舉一個小例子幫助理解:
(1)在數(shù)據(jù)庫bookshop中我新建了表a如下:

設(shè)置外鍵:

(2)在數(shù)據(jù)庫bookshop中我新建了表b如下:

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


這里:a表id2字段為外鍵字段,參看b表的主鍵,所以b表是父表,a表是子表;然后分別在設(shè)置a表外鍵的時候設(shè)置不同的四個值,就可以得出我上述的結(jié)論。
到此這篇關(guān)于Mysql外鍵設(shè)置中的CASCADE、NO ACTION、RESTRICT、SET NULL的文章就介紹到這了,更多相關(guān)Mysql CASCADE NO ACTION RESTRICT SET NULL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql5.7的安裝及Navicate長久免費(fèi)使用的實現(xiàn)過程
這篇文章主要介紹了mysql5.7的安裝及Navicate長久免費(fèi)使用的實現(xiàn)過程,本文給大家分享問題及解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11
mysql 本地數(shù)據(jù)庫如何從遠(yuǎn)程數(shù)據(jù)庫導(dǎo)數(shù)據(jù)
mysql 本地數(shù)據(jù)庫如何從遠(yuǎn)程數(shù)據(jù)庫導(dǎo)數(shù)據(jù),本文以此問題進(jìn)行詳細(xì)介紹,需要了解的朋友可以參考下2012-11-11
mysql實現(xiàn)多表關(guān)聯(lián)統(tǒng)計(子查詢統(tǒng)計)示例
這篇文章主要介紹了mysql實現(xiàn)多表關(guān)聯(lián)統(tǒng)計(子查詢統(tǒng)計),結(jié)合具體案例形式分析了mysql多表關(guān)聯(lián)統(tǒng)計的原理、實現(xiàn)方法及相關(guān)操作注意事項,需要的朋友可以參考下2019-10-10
數(shù)據(jù)庫SQL調(diào)優(yōu)的幾種方式匯總
在項目中,SQL的調(diào)優(yōu)對項目的性能來講至關(guān)重要,所有掌握常見的SQL調(diào)優(yōu)方式是必不可少的,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫SQL調(diào)優(yōu)的幾種方式,需要的朋友可以參考下2022-10-10

