1. 程式人生 > >Mysql-外鍵foreign key

Mysql-外鍵foreign key

incr foreign 不能 作用 for 新增 匹配 否則 必須

1、定義:如果一張表中有一個字段指向另一張表的主鍵,就子表中將該主鍵字段叫做外鍵。

    一張表中可存在多個外鍵

2、外鍵的作用

  保持數據的一致性、完整性

  a、對子表(外鍵所在的表)的作用:子表在進行寫操作的時候,如果外鍵字段在父表中找不到對應的匹配,操作就會失敗。

  b、對父表的作用:對父表的主鍵字段進行刪除和更改時,如果對應的主鍵在子表中被引用,操作就會失敗

3、外鍵的定制作用----三種約束模式:

  district:嚴格模式(默認), 父表不能刪除或更新一個被子表引用的記錄。

  cascade:級聯模式, 父表操作後,子表關聯的數據也跟著一起操作。

  set null:置空模式,前提外鍵字段允許為NLL, 父表操作後,子表對應的字段被置空

4、使用外鍵的前提:

  1. 表儲存引擎必須是innodb,否則創建的外鍵無約束效果。

  2. 外鍵的列類型必須與父表的主鍵類型完全一致。

  3. 外鍵的名字不能重復。

  4. 已經存在數據的字段被設為外鍵時,必須保證字段中的數據與父表的主鍵數據對應起來。

5、新增外鍵

  a、建表時添加

CREATE TABLE my_tab1(
        id int PRIMARY KEY auto_increment,
        name varchar(10) not null,
        class int,
        FOREIGN KEY(class) REFERENCES
my_tab2(主鍵字段名) )charset utf8

  b、在建好的表中添加

ALTER  TABLE my_tab1 ADD [constraint  外鍵名] FOREIGN KEY(外鍵字段名)    REFERENCES my_tab2(主鍵字段名)

6、刪除外鍵

ALERT TABLE my_tab DROP  FOREIGN KEY 外鍵名稱

  

Mysql-外鍵foreign key