外來鍵約束對子表的含義:
如果在父表中找不到候選鍵,則不允許在子表上進行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...