一、如果一張表中有乙個非主鍵的字段指向了別一張表中的主鍵,就將該字段叫做外來鍵。
一張表中可以有多個外來鍵。
外來鍵的預設作用有兩點:
1.對子表(外來鍵所在的表)的作用:子表在進行寫操作的時候,如果外來鍵字段在父表中找不到對應的匹配,操作就會失敗。
2.對父表的作用:對父表的主鍵字段進行刪和改時,如果對應的主鍵在子表中被引用,操作就會失敗。
外來鍵的定製作用----三種約束模式:
district:嚴格模式(預設), 父表不能刪除或更新乙個被子表引用的記錄。
cascade:級聯模式, 父表操作後,子表關聯的資料也跟著一起操作。
set null:置空模式,前提外來鍵字段允許為nll, 父表操作後,子表對應的字段被置空。
使用外來鍵的前提:
1. 表儲存引擎必須是innodb,否則建立的外來鍵無約束效果。
2. 外來鍵的列型別必須與父表的主鍵型別完全一致。
3. 外來鍵的名字不能重複。
4. 已經存在資料的字段被設為外來鍵時,必須保證欄位中的資料與父表的主鍵資料對應起來。
二、新增外來鍵
1. 在建立時增加
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;
2. 在建立好的表中增加
alter table my_tab1 add [constraint 外鍵名] foreign key(外來鍵欄位名) references mytab2(主鍵欄位名);
三、刪除外來鍵
alter table my_tab drop foreign key 外鍵名字;
MYSQL 外來鍵 作用說明
外來鍵 是個 或數個 指向另外乙個 主鍵的字段。外來鍵的目的是確定資料的參考完整性 referential integrity 換言之,只有被准許的資料值才會被存入資料庫內。舉例來說,假設我們有兩個 乙個 customer 裡面記錄了所有顧客的資料 另乙個 orders 裡面記錄了所有顧客訂購的資料...
mysql外來鍵的作用
mysql外來鍵的作用。最近自學資料庫mysql,然後有個疑問,一直不得其解,查詢了相關資料,最後還是沒有解決。關於外來鍵,我有自己的一些理解,但是不曉得是否正確,舉個例子來表達我的看法 假如現在需要建立乙個表,乙個什麼樣的表呢?乙個班級的學生個人資訊表 所以在設計的時候,就給表1新增乙個外來鍵,這...
MySql外來鍵約束作用
no action 指定如果試圖刪除 修改某一行,而該行的鍵被其他表的現有行中的外來鍵所引用,則產生錯誤並回滾 delete update語句。cascade set null 和 set default 允許通過刪除或更新鍵值來影響指定具有外來鍵關係的表,這些外來鍵關係可追溯到在其中進行修改的表。...