mysql外來鍵的使用

2021-09-18 02:48:46 字數 2138 閱讀 7881

一早就知道有mysql有外來鍵這回事,但是貌似平時的專案中用到的並不多,以至於我沒有去研究過這個東西,也不知道該怎麼用。當然也不清楚對效能的影響。這篇文章先搞清楚外來鍵的作用。

首先來新增一張表,做為測試要用的一張參考表。

create table `user` (

`id` int(11) not null auto_increment,

`name` varchar(255) default null,

`***` tinyint(4) default null,

`create_time` datetime default null,

primary key (`id`)

) engine=innodb auto_increment=3 default charset=utf8;

接著建一張包含外來鍵的表。

create table `user_article` (

`id` int(11) not null auto_increment,

`user_id` int(11) default null,

`content` varchar(255) default null,

`create_time` datetime default null,

`modify_time` datetime default null,

primary key (`id`),

key `user_id` (`user_id`),

constraint `user_article_ibfk_1` foreign key (`user_id`) references `user` (`id`)

) engine=innodb auto_increment=2 default charset=utf8;

接著就測試一下外來鍵的作用。分別在user表和user_article表建立一點資料。

user表
id

name

***create_time

1admin

12016-09-08 16:36:55

2xiaoming

22016-09-08 16:37:07

user_article表
id

user_id

content

create_time

modify_time11

hello word

2016-09-08 16:39:11

null

現在目的是要保持user表和user_article表的資料完整性,所以在刪除user的時候,如果user_article存在資料的話,那麼禁止刪除。user表和user_article表是通過user_id關聯的。在建表的時候就已經為user_article表的user_id欄位建立了外來鍵,參考字段就是user表的id,更新和刪除時選項都為 restrict。

現在我執行刪除語句delete from user where id=1;會報如下錯誤:

cannot delete or update a parent row: a foreign key constraint fails (`test`.`user_article`, constraint `user_article_ibfk_1` foreign key (`user_id`) references `user` (`id`))
因為在user_article中存在user_id為1的資料,所以這裡禁止參考表刪除這條資料。

更新和刪除時的選項可以根據自己的實際情況進行修改,下面是更新和修改時的觸發機制:

on delete和on update , 可設引數:
具體的使用還需要自己多測試多使用就能理解了,其實外來鍵也不難搞懂,只是接觸的少了。平時的**中實現這一類邏輯基本是用**去實現的,所以一般不會用到外來鍵。那麼外來鍵的優勢和劣勢在**,這個估計要親身體驗才能知道了吧,

MySQL 外來鍵及外來鍵的使用

如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。由此可見,外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。表間關係有一對一,一對多和多對多。首先我們舉個簡單的栗子 學生表,老師表...

mysql外來鍵教程 MySQL外來鍵使用詳解

最近有開始做乙個實驗室管理系統,因為分了幾個表進行儲存 所以要維護表間的關聯 研究了一下mysql的外來鍵 1 只有innodb型別的表才可以使用外來鍵,mysql預設是myisam,這種型別不支援外來鍵約束 2 外來鍵的好處 可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作 3 外來鍵的作用...

mysql是否推薦使用外來鍵 MySQL 外來鍵使用

mysql 外來鍵使用 外來鍵的使用條件 1.兩個表必須是innodb表,myisam表暫時不支援外來鍵 據說以後的版本有可能支援,但至少目前不支援 2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如果在較早的版本則需要顯示建立 3.外來鍵關係的兩個表的列...