<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使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法

        來源:懂視網 責編:小采 時間:2020-11-09 20:47:40
        文檔

        MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法

        MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法:本文實例講述了MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法。分享給大家供大家參考,具體如下: MySQL支持外鍵的存儲引擎只有InnoDB,在創(chuàng)建外鍵的時候,要求父表必須有對應的索引,子表在創(chuàng)建外鍵的時候也會自動創(chuàng)建對應的索引。在創(chuàng)建索引的時候,可以指定在刪
        推薦度:
        導讀MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法:本文實例講述了MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法。分享給大家供大家參考,具體如下: MySQL支持外鍵的存儲引擎只有InnoDB,在創(chuàng)建外鍵的時候,要求父表必須有對應的索引,子表在創(chuàng)建外鍵的時候也會自動創(chuàng)建對應的索引。在創(chuàng)建索引的時候,可以指定在刪

        本文實例講述了MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法。分享給大家供大家參考,具體如下:

        MySQL支持外鍵的存儲引擎只有InnoDB,在創(chuàng)建外鍵的時候,要求父表必須有對應的索引,子表在創(chuàng)建外鍵的時候也會自動創(chuàng)建對應的索引。在創(chuàng)建索引的時候,可以指定在刪除、更新父表時,對子表進行的相應操作,包括RESTRICT、NO ACTION、SET NULL和CASCADE。其中RESTRICT和NO ACTION相同,是指在子表有關聯(lián)記錄的情況下父表不能更新;CASCADE表示父表在更新或者刪除時,更新或者刪除子表對應記錄;SET NULL則是表示父表在更新或者刪除的時候,子表的對應字段被SET NULL。

        因為只有InnoDB引擎才允許使用外鍵,所以,我們的數(shù)據表必須使用InnoDB引擎。我所使用的版本是Mysql5.1版本的,過程如下:

        創(chuàng)建數(shù)據庫:

        Create database test;
        
        

        創(chuàng)建兩個表,其中第一個表的”id”是第二個表(userinfo)的外鍵:

        CREATE TABLE `user` (
         `id` int(4) NOT NULL,
         `sex` enum('f','m') DEFAULT NULL,
         PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        CREATE TABLE `userinfo` (
         `sn` int(4) NOT NULL AUTO_INCREMENT,
         `userid` int(4) NOT NULL,
         `info` varchar(20) DEFAULT NULL,
         PRIMARY KEY (`sn`),
         KEY `userid` (`userid`),
         CONSTRAINT `userinfo_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        
        

        注意:

        1、存儲引擎必須使用InnoDB引擎;

        2、外鍵必須建立索引;

        3、外鍵綁定關系這里使用了“ ON DELETE CASCADE ” “ON UPDATE CASCADE”,意思是如果外鍵對應數(shù)據被刪除或者更新時,將關聯(lián)數(shù)據完全刪除或者相應地更新。更多信息請參考MySQL手冊中關于InnoDB的文檔;

        好,接著我們再來插入數(shù)據測試:

        INSERT INTO `user` (`id`,`sex`)
         VALUES ('1', 'f'), ('2', 'm'), ('3', 'f');
        INSERT INTO `userinfo` (`sn`,`userid`,`info`)
         VALUES ('1', '1', '20050dsf'),
         ('2', '1', 'fdsfewfdsfds'),
         ('3', '1', 'gdsgergergrtre'),
         ('4', '2', 'et34t335werwe'),
         ('5', '2', '435rtgtrhfghfg'),
         ('6', '2', 'ret345tr4345'),
         ('7', '3', 'fgbdfvbcbfdgr'),
         ('8', '3', '45r2343234were'),
         ('9', '3', 'wfyhtyjtyjyjy');
        
        

        我們先看一下當前數(shù)據表的狀態(tài):

        mysql> show tables;
        +----------------+
        | Tables_in_test |
        +----------------+
        | user |
        | userinfo |
        +----------------+
        2 rows in set (0.00 sec)
        
        

        User表中的數(shù)據:

        mysql> select * from user;
        +----+------+
        | id | sex |
        +----+------+
        | 1 | f |
        | 2 | m |
        | 3 | f |
        +----+------+
        3 rows in set (0.00 sec)
        
        

        Userinfo表中的數(shù)據:

        mysql> select * from userinfo;
        +----+--------+-------------------+
        | sn | userid | info |
        +----+--------+-------------------+
        | 1 | 1 | 20050dsf |
        | 2 | 1 | fdsfewfdsfds |
        | 3 | 1 | gdsgergergrtre |
        | 4 | 2 | et34t335werwe |
        | 5 | 2 | 435rtgtrhfghfg |
        | 6 | 2 | ret345tr4345 |
        | 7 | 3 | fgbdfvbcbfdgr |
        | 8 | 3 | 45r2343234were |
        | 9 | 3 | wfyhtyjtyjyjy |
        +----+--------+-------------------+
        9 rows in set (0.00 sec)
        
        

        對于建立以上不表,相信對大家也沒什么難度了。好的,下面我們就要試驗我們的級聯(lián)刪除功能了。

        我們將刪除user表中id為2的數(shù)據記錄,看看userinf表中userid為2的相關子紀錄是否會自動刪除:

        執(zhí)行刪除操作成功!

        mysql> delete from `user` where `id`='2';
        Query OK, 1 row affected (0.03 sec)
        
        

        看看user表中已經沒有id為2的數(shù)據記錄了!

        mysql> select * from user;
        +----+------+
        | id | sex |
        +----+------+
        | 1 | f |
        | 3 | f |
        +----+------+
        2 rows in set (0.00 sec)
        
        

        再看看userinfo表中已經沒有userid為2的3條數(shù)據記錄了,對應數(shù)據確實自動刪除了!

        mysql> select * from userinfo;
        +----+--------+----------------+
        | sn | userid | info |
        +----+--------+----------------+
        | 1 | 1 | 20050dsf |
        | 2 | 1 | fdsfewfdsfds |
        | 3 | 1 | gdsgergergrtre |
        | 7 | 3 | fgbdfvbcbfdgr |
        | 8 | 3 | 45r2343234were |
        | 9 | 3 | wfyhtyjtyjyjy |
        +----+--------+----------------+
        6 rows in set (0.00 sec)
        
        

        更新的操作也類似,因為我們在前面建表的時候已經定義外鍵刪除、更新操作都是CASCADE,所以在這里可以直接測試數(shù)據。

        將user表中原來id為1的數(shù)據記錄更改為id為4,執(zhí)行如下:

        mysql> update user set id=4 where id='1';
        Query OK, 1 row affected (0.03 sec)
        Rows matched: 1 Changed: 1 Warnings: 0
        
        

        現(xiàn)在去看看兩個表中是數(shù)據是否發(fā)生了變化:

        mysql> select * from user;
        +----+------+
        | id | sex |
        +----+------+
        | 3 | f |
        | 4 | f |
        +----+------+
        2 rows in set (0.00 sec)
        mysql> select * from userinfo;
        +----+--------+----------------+
        | sn | userid | info |
        +----+--------+----------------+
        | 1 | 4 | 20050dsf |
        | 2 | 4 | fdsfewfdsfds |
        | 3 | 4 | gdsgergergrtre |
        | 7 | 3 | fgbdfvbcbfdgr |
        | 8 | 3 | 45r2343234were |
        | 9 | 3 | wfyhtyjtyjyjy |
        +----+--------+----------------+
        6 rows in set (0.00 sec)
        
        

        比較原來的表可以發(fā)現(xiàn)它們的確已經更新成功了,測試完成!!!這也就實現(xiàn)了用外鍵對多個相關聯(lián)的表做同時刪除、更新的操作,從而保證了數(shù)據的一致性。

        更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據庫鎖相關技巧匯總》及《MySQL常用函數(shù)大匯總》

        希望本文所述對大家MySQL數(shù)據庫計有所幫助。

        您可能感興趣的文章:

      1. mysql 批量更新與批量更新多條記錄的不同值實現(xiàn)方法
      2. MySQL UPDATE更新語句精解
      3. MySql中使用INSERT INTO語句更新多條數(shù)據的例子
      4. mysql 記錄不存在時插入 記錄存在則更新的實現(xiàn)方法
      5. mysql 存在該記錄則更新,不存在則插入記錄的sql
      6. mysql用一個表更新另一個表的方法
      7. mysql 一次更新(update)多條記錄的思路
      8. MySQL查詢結果復制到新表的方法(更新、插入)
      9. 基于更新SQL語句理解MySQL鎖定詳解
      10. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法

        MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法:本文實例講述了MySQL使用外鍵實現(xiàn)級聯(lián)刪除與更新的方法。分享給大家供大家參考,具體如下: MySQL支持外鍵的存儲引擎只有InnoDB,在創(chuàng)建外鍵的時候,要求父表必須有對應的索引,子表在創(chuàng)建外鍵的時候也會自動創(chuàng)建對應的索引。在創(chuàng)建索引的時候,可以指定在刪
        推薦度:
        標簽: 更新 mysql 外鍵
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top 主站蜘蛛池模板: 狠狠亚洲狠狠欧洲2019| 在线jlzzjlzz免费播放| 精品国产亚洲一区二区三区| 一级特黄特色的免费大片视频| 久久国产精品免费一区二区三区| 免费在线观看亚洲| 黄床大片30分钟免费看| 亚洲精品tv久久久久| 中文字幕免费在线播放| 久久亚洲国产午夜精品理论片| 成人一级免费视频| 亚洲线精品一区二区三区影音先锋| 免费看一级一级人妻片| 国产亚洲精品线观看动态图| 97人妻精品全国免费视频 | 污视频网站免费在线观看| 国产免费av一区二区三区| 丰满妇女做a级毛片免费观看| 亚洲国产精品第一区二区三区| 国产亚洲精品91| 亚洲精品无码午夜福利中文字幕 | 日本免费在线中文字幕| 亚洲精品美女视频| 国产成人免费A在线视频| 成人无码精品1区2区3区免费看| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲三级中文字幕| 四虎成人精品在永久免费| 两个人看的www高清免费视频| 久久精品亚洲一区二区| 成年女人看片免费视频播放器| 亚洲日本va一区二区三区| 亚洲乱码日产精品a级毛片久久 | 香蕉免费在线视频| 亚洲一区二区久久| 国产成人综合亚洲亚洲国产第一页 | 亚洲日韩一区二区三区| 中文亚洲成a人片在线观看| 无码永久免费AV网站| 国产精品免费久久久久电影网| 人人狠狠综合久久亚洲婷婷|