MySQL外鍵約束的刪除和更新總結(jié)
外鍵約束
外鍵約束的刪除/更新行為
行為 | 說明 |
---|---|
NO ACTION | 當(dāng)在父表中刪除/更新對應(yīng)記錄時,首先檢查該記錄是否有對應(yīng)外鍵,如果有則不允許刪除/更新。(與RESTRICT一致) |
RESTRICT | 當(dāng)在父表中刪除/更新對應(yīng)記錄時,首先檢查該記錄是否有對應(yīng)外鍵,如果有則不允許刪除/更新。(與NOT ACTION一致) |
CASCADE | 當(dāng)在父表中刪除/更新對應(yīng)記錄時,首先檢查該記錄是否有對應(yīng)外鍵,如果有,則也刪除/更新外鍵在子表總的記錄。 |
SET NULL | 當(dāng)在父表中刪除對應(yīng)記錄時,首先檢查該記錄是否有對應(yīng)外鍵,如果有則設(shè)置該子表中該外鍵值為null(這就要求該外鍵允許取null)。 |
SET DEFAULT | 父表有變更時,子表將外鍵列設(shè)置為一個默認(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也會跟著改變
當(dāng)我們刪除父表中id為6,我們可以看到子表emp中存在外鍵關(guān)聯(lián)的數(shù)據(jù)也會被刪除。 說明:如果子表與父表存在外鍵關(guān)聯(lián),刪除父表的數(shù)據(jù)也會影響子表。
演示2:
現(xiàn)在我們先刪除剛剛創(chuàng)建的emp和dept這兩張表,然后重新創(chuàng)建。然后通過命令行進行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 ;
測試:
刪除dept表中的第一行,然后刷新,我們可以看到emp表中的id為1的數(shù)據(jù)全部置為null了。
通過圖形化界面創(chuàng)建
選中預(yù)修改的表,然后點擊modify table,再點擊foreign keys ,雙擊命令,我們可以在這里修改更新和刪除的規(guī)則,改完以后點擊execute執(zhí)行即可.
總結(jié)
以上就是MySQL外鍵約束的刪除和更新總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于MySQL外鍵約束的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL中表復(fù)制:create table like 與 create table as select
這篇文章主要介紹了MySQL中表復(fù)制:create table like 與 create table as select,需要的朋友可以參考下2014-12-12mysql將數(shù)據(jù)庫中所有表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到另一個庫的方法(親測有效)
這篇文章主要給大家介紹了關(guān)于mysql將數(shù)據(jù)庫中所有表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到另一個庫的方法,文中通過代碼介紹的非常詳細(xì),親測有效,對同樣遇到這個需求的朋友具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01MySQL實現(xiàn)查詢某個字段含有字母數(shù)字的值
這篇文章主要介紹了MySQL實現(xiàn)查詢某個字段含有字母數(shù)字的值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07mysql-connector-java.jar包的下載過程詳解
這篇文章主要介紹了mysql-connector-java.jar包的下載過程詳解,mysql-connector-java.jar是java連接使用MySQL是必不可少的,感興趣的可以了解一下2020-07-07python中的mysql數(shù)據(jù)庫LIKE操作符詳解
LIKE操作符用于在WHERE子句中搜索列中的指定模式,like操作符的語法在文章開頭也給大家提到,通過兩種示例代碼給大家介紹python中的mysql數(shù)據(jù)庫LIKE操作符知識,感興趣的朋友跟隨小編一起看看吧2021-07-07Windows Server 2003下修改MySQL 5.5數(shù)據(jù)庫data目錄
這篇文章主要介紹了Windows Server 2003下修改MySQL 5.5數(shù)據(jù)庫data目錄,需要的朋友可以參考下2016-04-04