mysql外來鍵約束

2021-08-10 11:12:43 字數 770 閱讀 6205

外來鍵約束對子表的含義:

如果在父表中找不到候選鍵,則不允許在子表上進行insert/update 

外來鍵約束對父表的含義:

在父表上進行update/delete以更新或刪除在子表中有一條或多條對應匹配行的候選鍵時,父表的行為取決於:在定義子表的外來鍵時指定的on update/on delete子句。

cascade方式 (即級聯刪除、更新)

在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄 

on delete cascade從mysql3.23.50開始可用; on update cascade從mysql4.0.8開始可用 

set null方式

在父表上update/delete記錄時,將子表上匹配記錄的列設為null 

要注意子表的外來鍵列不能為not null 

on delete set null從mysql3.23.50開始可用; on update set null從mysql4.0.8開始可用 

no action方式

如果子表中有匹配的記錄,則不允許對父表對應候選鍵進行update/delete操作 

這個是ansi sql-92標準,從mysql4.0.8開始支援 

restrict方式

同no action, 都是立即檢查外來鍵約束 

mysql約束與外來鍵 MySQL 外來鍵與約束

外來鍵的建立 建表如下 create table parent id int not null,primary key id type innodb create table child id int,parent id int,foreign key parent id references pa...

MySQL 外來鍵約束

建立測試主表.id 是主鍵.create table test main id int,value varchar 10 primary key id 建立測試子表.create table test sub id int,main id int,value varchar 10 primary k...

MySQL外來鍵約束

innodb型別表有乙個其他儲存引擎不支援的特性 外來鍵約束。當b表的外來鍵關聯到a表的主鍵時 表b是父表a表的子表 如果刪除了a表,那麼b中的外來鍵則仍然關聯著乙個不存在的表的主鍵。而外鍵約束則設定了當約束被破壞時應該應用的的規則,包括防止約束破壞。建立乙個外來鍵約束的語法是 foreign ke...