2016年1月9日 星期六

MySQL 外鍵屬性

MySQL外鍵設置中的的 Cascade、NO ACTION、Restrict、SET Null



添加外鍵的格式:

ALTER TABLE yourtablename
ADD [CONSTRAINT 外鍵名] FOREIGN KEY [id] (index_col_name, ...)

REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {CASCADE | SET Null | NO ACTION | RESTRICT}]
[ON UPDATE {CASCADE | SET Null | NO ACTION | RESTRICT}]

說明:
on delete/on update,用於定義delete,update操作.以下是update,delete操作的各種約束類型:

CASCADE:
外鍵表中外鍵欄位值會被更新,或所在的列會被刪除.

RESTRICT:
RESTRICT也相當於no action,即不進行任何操作.即,拒絕父表update外鍵關聯列,delete記錄.

set null:
被父面的外鍵關聯欄位被update ,delete時,子表的外鍵列被設置為null.
而對於insert,子表的外鍵列輸入的值,只能是父表外鍵關聯列已有的值.否則出錯.

外鍵定義服從下列情況:(前提條件)
1)
所有tables必須是InnoDB型,它們不能是臨時表.因為在MySQL中只有InnoDB類型的表才支援外鍵.
2)
所有要建立外鍵的欄位必須建立索引.
3)
對於非InnoDB表,FOREIGN KEY子句會被忽略掉。
 
注意:
創建外鍵時,定義外鍵名時,不能加引號.
如: constraint 'fk_1' 或 constraint "fk_1"是錯誤的

沒有留言:

張貼留言