MySQL外鍵約束的刪除和更新總結(jié)
外鍵約束
外鍵約束的刪除/更新行為
行為 | 說(shuō)明 |
|---|---|
NO ACTION | 當(dāng)在父表中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有則不允許刪除/更新。(與RESTRICT一致) |
RESTRICT | 當(dāng)在父表中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有則不允許刪除/更新。(與NOT ACTION一致) |
CASCADE | 當(dāng)在父表中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有,則也刪除/更新外鍵在子表總的記錄。 |
SET NULL | 當(dāng)在父表中刪除對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有則設(shè)置該子表中該外鍵值為null(這就要求該外鍵允許取null)。 |
SET DEFAULT | 父表有變更時(shí),子表將外鍵列設(shè)置為一個(gè)默認(rèn)的值(innodb不支持) |
alter table 表名 add constraint 外鍵名稱 references 主表名(主表字段名) on update cascade on delete cascade
-- 添加外鍵約束并指定外鍵的刪除和更新行為 alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;



將父表dept中的研發(fā)部的id改為6,emp表中的id也會(huì)跟著改變

當(dāng)我們刪除父表中id為6,我們可以看到子表emp中存在外鍵關(guān)聯(lián)的數(shù)據(jù)也會(huì)被刪除。 說(shuō)明:如果子表與父表存在外鍵關(guān)聯(lián),刪除父表的數(shù)據(jù)也會(huì)影響子表。

演示2:
現(xiàn)在我們先刪除剛剛創(chuàng)建的emp和dept這兩張表,然后重新創(chuàng)建。然后通過(guò)命令行進(jìn)行emp表的外鍵的添加。
-- 添加外鍵約束并指定外鍵的刪除和更新行為 alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;
測(cè)試:
刪除dept表中的第一行,然后刷新,我們可以看到emp表中的id為1的數(shù)據(jù)全部置為null了。


通過(guò)圖形化界面創(chuàng)建



選中預(yù)修改的表,然后點(diǎn)擊modify table,再點(diǎn)擊foreign keys ,雙擊命令,我們可以在這里修改更新和刪除的規(guī)則,改完以后點(diǎn)擊execute執(zhí)行即可.
總結(jié)

以上就是MySQL外鍵約束的刪除和更新總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于MySQL外鍵約束的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL時(shí)間設(shè)置注意事項(xiàng)的深入總結(jié)
這篇文章主要給大家介紹了關(guān)于MySQL時(shí)間設(shè)置注意事項(xiàng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
mysql遷移達(dá)夢(mèng)列長(zhǎng)度超出定義的簡(jiǎn)單解決方法
這篇文章主要介紹了mysql遷移達(dá)夢(mèng)列長(zhǎng)度超出定義解決方法的相關(guān)資料,,在達(dá)夢(mèng)數(shù)據(jù)庫(kù)中,字符串長(zhǎng)度的存儲(chǔ)方式與MySQL不同,導(dǎo)致遷移過(guò)程中出現(xiàn)數(shù)據(jù)長(zhǎng)度不足的錯(cuò)誤,解決方法包括在MySQL中將varchar類型修改為varchar(10char)以強(qiáng)制字符存儲(chǔ),需要的朋友可以參考下2024-12-12
mysql嚴(yán)格模式Strict?Mode詳細(xì)說(shuō)明
使用mysql嚴(yán)格模式可以使數(shù)據(jù)更加安全嚴(yán)格,缺點(diǎn)是減少了對(duì)空數(shù)據(jù)入庫(kù)的兼容性,下面這篇文章主要給大家介紹了關(guān)于mysql嚴(yán)格模式Strict?Mode詳細(xì)說(shuō)明的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
使用python連接mysql數(shù)據(jù)庫(kù)之pymysql模塊的使用
這篇文章主要介紹了使用python連接mysql數(shù)據(jù)庫(kù)之pymysql模塊的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

