添加外鍵的格式:
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"是錯誤的
沒有留言:
張貼留言