alter table yourtablename
add [constraint 外鍵名] foreign key [id] (index_col_name, ...)
references tbl_name (index_col_name, ...)
[on delete ]
[on update ]
說明: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"是錯誤的
MySQL中外鍵約束
外來鍵的好處 可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作 如果在父表中找不到候選鍵,則不允許在子表上進行insert update 外來鍵定義服從下列情況 所有tables必須是innodb型,它們不能是臨時表。在引用表中,必須有乙個索引,外來鍵列以同樣的順序被列在其中作為第一列。這樣乙...
Oracle中外鍵約束問題
關於資料結構的外來鍵約束,一般來說,在開發系統的過程中,外來鍵約束遇到的問題較少,但是在移植程式,公升級程式的過程中,外來鍵約束對程式設計師的困擾尤其嚴重,如果子表a中的乙個欄位同主表b的字段有外來鍵關係,如果b表沒有新增對應的資料,那麼在操作a表的過程中就容易出現外來鍵約束錯誤提示,這樣的情況他一...
Mysql的5中外鍵約束方式
何為外來鍵?如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主表,表b稱為子表 從表 注 兩個表必須是innodb表,myisam表暫時不支援外來鍵 外來鍵關係的兩個表的列必須是資料型別相似,也就是可以相互轉換型別的列,比如int和tinyint可以,而int和char則不可以 ...