国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

[轉]MYSQL外鍵(ForeignKey)的使用

來源:懂視網 責編:小采 時間:2020-11-09 13:09:29
文檔

[轉]MYSQL外鍵(ForeignKey)的使用

[轉]MYSQL外鍵(ForeignKey)的使用:好久沒有接觸MySQL了,最近接到一個任務一來就是一大堆InnoDB,還有外鍵- - 網上發現了一篇很有意思的文章,轉過來娛樂娛樂:) 外鍵的使用條件: 1.兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵(據說以后的版本有可能支持,但至少目前不支持); 2.外
推薦度:
導讀[轉]MYSQL外鍵(ForeignKey)的使用:好久沒有接觸MySQL了,最近接到一個任務一來就是一大堆InnoDB,還有外鍵- - 網上發現了一篇很有意思的文章,轉過來娛樂娛樂:) 外鍵的使用條件: 1.兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵(據說以后的版本有可能支持,但至少目前不支持); 2.外

好久沒有接觸MySQL了,最近接到一個任務一來就是一大堆InnoDB,還有外鍵- - 網上發現了一篇很有意思的文章,轉過來娛樂娛樂:) 外鍵的使用條件: 1.兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵(據說以后的版本有可能支持,但至少目前不支持); 2.外鍵


好久沒有接觸MySQL了,最近接到一個任務一來就是一大堆InnoDB,還有外鍵- -
網上發現了一篇很有意思的文章,轉過來娛樂娛樂:)

外鍵的使用條件:
1.兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵(據說以后的版本有可能支持,但至少目前不支持);
2.外鍵列必須建立了索引,MySQL 4.1.2以后的版本在建立外鍵時會自動創建索引,但如果在較早的版本則需要顯示建立;
3.外鍵關系的兩個表的列必須是數據類型相似,也就是可以相互轉換類型的列,比如int和tinyint可以,而int和char則不可以;

外鍵的好處:可以使得兩張表關聯,保證數據的一致性和實現一些級聯操作;

外鍵的定義語法:
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
該語法可以在 CREATE TABLE 和 ALTER TABLE 時使用,如果不指定CONSTRAINT symbol,MYSQL會自動生成一個名字。

ON DELETE、ON UPDATE表示事件觸發限制,可設參數:
RESTRICT(限制外表中的外鍵改動)
CASCADE(跟隨外鍵改動)
SET NULL(設空值)
SET DEFAULT(設默認值)
NO ACTION(無動作,默認的)

搞個例子,簡單演示一下使用,做dage和xiaodi兩個表,大哥表是主鍵,小弟表是外鍵:

CREATE TABLE `dage` (
	`id` int(11) NOT NULL auto_increment,
	`name` varchar(32) default '',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `xiaodi` (
	`id` int(11) NOT NULL auto_increment,
	`dage_id` int(11) default NULL,
	`name` varchar(32) default '',
	PRIMARY KEY (`id`),
	KEY `dage_id` (`dage_id`),
	CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

插入個大哥:

mysql> insert into dage(name) values('銅鑼灣');
Query OK, 1 row affected (0.01 sec)
mysql> select * from dage;
+----+--------+
| id | name |
+----+--------+
| 1 | 銅鑼灣 |
+----+--------+
1 row in set (0.00 sec)

插入個小弟:

mysql> insert into xiaodi(dage_id,name) values(1,'銅鑼灣_小弟A');
Query OK, 1 row affected (0.02 sec)
mysql> select * from xiaodi;
+----+---------+--------------+
| id | dage_id | name |
+----+---------+--------------+
| 1 | 1 | 銅鑼灣_小弟A |
+----+---------+--------------+

把大哥刪除:

mysql> delete from dage where id=1;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`bstar/xiaodi`, CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`))

提示:不行呀,有約束的,大哥下面還有小弟,可不能扔下我們不管呀!

插入一個新的小弟:

mysql> insert into xiaodi(dage_id,name) values(2,'旺角_小弟A'); 
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`bstar/xiaodi`, CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`))

提示:小子,想造反呀!你還沒大哥呢!

把外鍵約束增加事件觸發限制:

mysql> show create table xiaodi;
 CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`)
mysql> alter table xiaodi drop foreign key xiaodi_ibfk_1; 
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 
mysql> alter table xiaodi add foreign key(dage_id) references dage(id) on delete cascade on update cascade;
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0

再次試著把大哥刪了:

mysql> delete from dage where id=1;
Query OK, 1 row affected (0.01 sec)
mysql> select * from dage;
Empty set (0.01 sec)
mysql> select * from xiaodi;
Empty set (0.00 sec)

得,這回對應的小弟也沒了,沒辦法,誰讓你跟我on delete cascade了呢!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

[轉]MYSQL外鍵(ForeignKey)的使用

[轉]MYSQL外鍵(ForeignKey)的使用:好久沒有接觸MySQL了,最近接到一個任務一來就是一大堆InnoDB,還有外鍵- - 網上發現了一篇很有意思的文章,轉過來娛樂娛樂:) 外鍵的使用條件: 1.兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵(據說以后的版本有可能支持,但至少目前不支持); 2.外
推薦度:
標簽: 沒有 使用 的使用
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 91 久久 | 国产成人深夜福利短视频99 | 久草婷婷| 国产91在线 | 日本 | 欧美色综合图区 | 亚洲欧美日韩精品久久久 | 欧美亚洲天堂 | 久久激情综合网 | 日韩在线播放一区 | 国产精品久久久久久久成人午夜 | 欧美v日韩v亚洲v最新 | 老司机精品视频一区二区 | 国产91久久精品一区二区 | 亚洲 欧美 日韩 小说 另类 | 免费在线欧美 | 国产精品久久久久久久免费 | 综合亚洲一区二区三区 | 亚洲欧美在线视频观看 | 国产91久久久久久久免费 | 欧美另类图片亚洲偷 | h片在线看| 国产区二区| 91久久国产综合精品女同我 | 国产精品伦理久久久久 | 国产成人在线观看免费网站 | 国内一区亚洲综合图区欧美 | 亚洲精品综合久久中文字幕 | 免费一级a毛片在线播 | 国产精品26p | 97久久综合区小说区图片专区 | 国产一区二区三区免费在线观看 | 欧美xx在线 | 日韩综合网 | 国内精品久久久久 | 欧美国产精品va在线观看 | 欧美亚洲日本国产 | 久久一区二区三区四区 | 国产精品视频久久久久久 | 亚洲一级二级 | 国产视频第一页 | 日韩亚洲欧美日本精品va |