MySQ外來鍵
阿新 • • 發佈:2022-03-16
外來鍵
1、概述
MySQL3.2版本以後 innodb支援外來鍵約束
外來鍵的作用:可以使倆張表進行關聯 保持資料的一致性和實現級聯操作
注意:外來鍵型別必須是同一型別 int tinyint 但是 和varchar就不可以
2、建立表
-
建立A表
mysql> create table a( -> id int unsigned primary key auto_increment, -> name varchar(10) default 'lucky' -> );
-
建立表B references[ˈrefrənsɪz]
mysql> create table b( -> id int unsigned primary key auto_increment, -> a_id int unsigned, -> name varchar(10) default '', -> key a_id(a_id), -> constraint b_f_k foreign key (a_id) references a(id) -> );
外來鍵名稱b_f_k 當前B表中的a_id 關聯a表中的自增id
3、插入資料
-
A表插入資料
insert into a values(null,'lucky');
-
B表插入資料
insert into b values(null,1,'b');
4、刪除資料
-
刪除B表資料
delete from b;
-
刪除A表資料
delete from a;
-
注意
新增外來鍵的表為輔表 另外一個表為主表
當刪除B表 在刪除A表中資料沒有任何問題
刪除以後再次使用原命令(上面的新增資料命令進行新增時) B表報錯 原因外來鍵關聯不上
如果先刪除A表 B表如果存在關聯資料 則報錯
5、刪除外來鍵 新增事件觸發限制
-
檢視建立表B
show create table B
-
刪除外來鍵
alter table b drop foreign key b_f_k;
-
新增外來鍵
alter table b add foreign key (a_id) references a(id) on delete cascade on update cascade;
6、刪除表A中資料
delete from a;