MySQL中 外來鍵約束

2021-07-27 09:33:12 字數 751 閱讀 9998

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則不可以 ...