1. 程式人生 > 其它 >MySQ外來鍵

MySQ外來鍵

外來鍵

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;