<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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香蕉成人免费网站| 青娱乐免费在线视频| 亚洲国产V高清在线观看| 国产精品亚洲一区二区三区| 在线观看91精品国产不卡免费| 亚洲一卡2卡3卡4卡乱码 在线| 91成人免费观看网站| 99999久久久久久亚洲| 成人毛片免费播放| 综合一区自拍亚洲综合图区| 免费一级毛片正在播放| 一级毛片视频免费| 久久亚洲精品国产精品| 永久免费AV无码国产网站| 亚洲av无码一区二区三区四区 | 99re免费在线视频| 精品亚洲成A人无码成A在线观看| 日韩欧美一区二区三区免费观看| 亚洲变态另类一区二区三区 | 热re99久久6国产精品免费| 亚洲综合激情视频| 美女黄网站人色视频免费国产| 国产亚洲视频在线观看| 亚洲美女又黄又爽在线观看| 91精品国产免费久久国语蜜臀 | 蜜芽亚洲av无码一区二区三区| 在线亚洲人成电影网站色www| 国内精品免费视频精选在线观看| 亚洲国语在线视频手机在线| 国产精品久免费的黄网站| 国产日韩在线视频免费播放| 亚洲高清中文字幕综合网| 又粗又硬又大又爽免费视频播放| 日本免费高清视频| 亚洲av色香蕉一区二区三区蜜桃| 色噜噜亚洲精品中文字幕| 在线观看av永久免费| 一级毛片正片免费视频手机看| 精品亚洲成a人片在线观看| 四虎永久在线精品免费观看地址 | 中文字幕手机在线免费看电影|