MySQL外來鍵約束

2021-07-04 15:10:30 字數 649 閱讀 1198

innodb型別表有乙個其他儲存引擎不支援的特性——外來鍵約束。

當b表的外來鍵關聯到a表的主鍵時(表b是父表a表的子表),如果刪除了a表,那麼b中的外來鍵則仍然關聯著乙個不存在的表的主鍵。而外鍵約束則設定了當約束被破壞時應該應用的的規則,包括防止約束破壞。

建立乙個外來鍵約束的語法是:

foreign key(item_name)references table (column)

table(column)子句是約束該外來鍵的父表列的引用,該語句只是標識了關係,並沒有說明約束被破壞時如何操作。

語句後面附上內容來決定觸發什麼動作:

on delete action

on update action

其中action總共有5個動作可選

(1)restrict:不指定任何動作

(2)no action:不指定任何動作

(3)set default:

(4)cascade:最有用的選項。刪除父記錄將導致那個以父id作為外來鍵的子記錄也被刪除

(5)set null:刪除父記錄將導致子表中相應的外來鍵被設定為null,如果該錶的列定義為not null(大部分情況是這樣),刪除父記錄將引發乙個錯誤注意

由於只有innodb表型別的表支援外來鍵約束,所以相關聯的兩個表都必須是innodb型別。

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...

My SQL外來鍵約束

外來鍵約束對子表的含義 如果在父表中找不到對應的候選鍵,則不能對子表進行insert update操作 外來鍵約束對父表的含義 在父表上進行update delete以更新或刪除在子表中有一條或多條對應匹配行的候選鍵時,父表的行為取決於 在定義子表的外來鍵時指定的on update on delet...