Mysql外鍵設(shè)置中的CASCADE、NO ACTION、RESTRICT、SET NULL
今天在使用Navicat for mysql設(shè)計(jì)表時(shí),在設(shè)置外鍵的時(shí)候,刪除時(shí)和更新時(shí)兩列有四個(gè)值可以選擇:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全親自試了一遍,它們的區(qū)別如下:
- CASCADE:父表delete、update的時(shí)候,子表會(huì)delete、update掉關(guān)聯(lián)記錄;
- SET NULL:父表delete、update的時(shí)候,子表會(huì)將關(guān)聯(lián)記錄的外鍵字段所在列設(shè)為null,所以注意在設(shè)計(jì)子表時(shí)外鍵不能設(shè)為not null;
- RESTRICT:如果想要?jiǎng)h除父表的記錄時(shí),而在子表中有關(guān)聯(lián)該父表的記錄,則不允許刪除父表中的記錄;
- NO ACTION:同 RESTRICT,也是首先先檢查外鍵;
空、RESTRICT、NO ACTION | 刪除:從表記錄不存在時(shí),主表才可以刪除,刪除從表,主表不變。 更新:從表記錄不存在時(shí),主表菜可以更新,更新從表,主表不變。 |
CASCADE | 刪除:刪除主表時(shí)自動(dòng)刪除從表。刪除從表,主表不變。 更新:更新主表時(shí)自動(dòng)更新從表。更新從表,主表不變。 |
SET NULL | 刪除:刪除主表時(shí)自動(dòng)更新從表為NULL,刪除從表,主表不變。 更新:更新主表時(shí)自動(dòng)更新從表值為NULL。更新從表,主表不變。 |
下面舉一個(gè)小例子幫助理解:
(1)在數(shù)據(jù)庫bookshop中我新建了表a如下:
設(shè)置外鍵:
(2)在數(shù)據(jù)庫bookshop中我新建了表b如下:
(3)給a、b表插入記錄如下:
這里:a表id2字段為外鍵字段,參看b表的主鍵,所以b表是父表,a表是子表;然后分別在設(shè)置a表外鍵的時(shí)候設(shè)置不同的四個(gè)值,就可以得出我上述的結(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)文章
Windows10下mysql 8.0.12解壓版安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Windows10下mysql 8.0.12解壓版安裝方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08MySQL開發(fā)中存儲(chǔ)函數(shù)與觸發(fā)器使用示例
這篇文章主要為大家詳細(xì)介紹了MySQL中存儲(chǔ)函數(shù)的創(chuàng)建與觸發(fā)器的設(shè)置,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下2023-01-01insert和select結(jié)合實(shí)現(xiàn)"插入某字段在數(shù)據(jù)庫中的最大值+1"的方法
今天小編就為大家分享一篇關(guān)于insert和select結(jié)合實(shí)現(xiàn)"插入某字段在數(shù)據(jù)庫中的最大值+1"的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03登錄MySQL數(shù)據(jù)庫最快幾步(圖文步驟詳解)
當(dāng)?MySQL?服務(wù)開啟后,就可以通過客戶端來登錄?MySQL?數(shù)據(jù)庫了。在?Windows?操作系統(tǒng)下可以使用?DOS?命令登錄數(shù)據(jù)庫,本節(jié)將介紹使用命令方式登錄?MySQL?數(shù)據(jù)庫的方法2023-10-10MySQL中在查詢結(jié)果集中得到記錄行號(hào)的方法
這篇文章主要介紹了MySQL中在查詢結(jié)果集中得到記錄行號(hào)的方法,本文解決方法是通過預(yù)定義用戶變量來實(shí)現(xiàn),需要的朋友可以參考下2015-01-01MySQL將一個(gè)字段中以逗號(hào)分隔的取出來形成新的字段實(shí)現(xiàn)
這篇文章主要介紹了MySQL將一個(gè)字段中以逗號(hào)分隔的取出來形成新的字段實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10mysql觸發(fā)器之創(chuàng)建多個(gè)觸發(fā)器操作實(shí)例分析
這篇文章主要介紹了mysql觸發(fā)器之創(chuàng)建多個(gè)觸發(fā)器操作,結(jié)合實(shí)例形式分析了mysql創(chuàng)建及使用多個(gè)觸發(fā)器的相關(guān)操作技巧,需要的朋友可以參考下2019-12-12