<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-9  評論-168  文章-266  trackbacks-0
    首先,目前在產品環境可用的MySQL版本(指4.0.x和4.1.x)中,只有InnoDB引擎才允許使用外鍵,所以,我們的數據表必須使用InnoDB引擎。

    下面,我們先創建以下測試用數據庫表:


    CREATE TABLE `roottb` (
      `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,
      `data` VARCHAR(100) NOT NULL DEFAULT '',
      PRIMARY KEY (`id`)
    ) TYPE=InnoDB;

    CREATE TABLE `subtb` (
      `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,
      `rootid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
      `data` VARCHAR(100) NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      INDEX (`rootid`),
      FOREIGN KEY (`rootid`) REFERENCES roottb(`id`) ON DELETE CASCADE
    ) TYPE=InnoDB;


    注意:
    1、必須使用InnoDB引擎;
    2、外鍵必須建立索引(INDEX);
    3、外鍵綁定關系這里使用了“ ON DELETE CASCADE”,意思是如果外鍵對應數據被刪除,將關聯數據完全刪除,更多信息請參考MySQL手冊中關于InnoDB的文檔;

    好,接著我們再來插入測試數據:


    INSERT INTO `roottb` (`id`,`data`)
      VALUES ('1', 'test root line 1'),
             ('2', 'test root line 2'),
             ('3', 'test root line 3');

    INSERT INTO `subtb` (`id`,`rootid`,`data`)
      VALUES ('1', '1', 'test sub line 1 for root 1'),
             ('2', '1', 'test sub line 2 for root 1'),
             ('3', '1', 'test sub line 3 for root 1'),
             ('4', '2', 'test sub line 1 for root 2'),
             ('5', '2', 'test sub line 2 for root 2'),
             ('6', '2', 'test sub line 3 for root 2'),
             ('7', '3', 'test sub line 1 for root 3'),
             ('8', '3', 'test sub line 2 for root 3'),
             ('9', '3', 'test sub line 3 for root 3');
      

    我們先看一下當前數據表的狀態:


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

    mysql>; select * from `roottb`;
    +----+------------------+
    | id | data             |
    +----+------------------+
    |  1 | test root line 1 |
    |  2 | test root line 2 |
    |  3 | test root line 3 |
    +----+------------------+
    3 rows in set (0.05 sec)

    mysql>; select * from `subtb`;
    +----+--------+----------------------------+
    | id | rootid | data                       |
    +----+--------+----------------------------+
    |  1 |      1 | test sub line 1 for root 1 |
    |  2 |      1 | test sub line 2 for root 1 |
    |  3 |      1 | test sub line 3 for root 1 |
    |  4 |      2 | test sub line 1 for root 2 |
    |  5 |      2 | test sub line 2 for root 2 |
    |  6 |      2 | test sub line 3 for root 2 |
    |  7 |      3 | test sub line 1 for root 3 |
    |  8 |      3 | test sub line 2 for root 3 |
    |  9 |      3 | test sub line 3 for root 3 |
    +----+--------+----------------------------+
    9 rows in set (0.01 sec)


    嗯,一切都正常,好,下面我們要試驗我們的級聯刪除功能了。

    我們將只刪除roottb表中id為2的數據記錄,看看subtb表中rootid為2的相關子紀錄是否會自動刪除:


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

    mysql>; select * from `roottb`;
    +----+------------------+
    | id | data             |
    +----+------------------+
    |  1 | test root line 1 |
    |  3 | test root line 3 |
    +----+------------------+
    2 rows in set (0.00 sec)

    mysql>; select * from `subtb`;
    +----+--------+----------------------------+
    | id | rootid | data                       |
    +----+--------+----------------------------+
    |  1 |      1 | test sub line 1 for root 1 |
    |  2 |      1 | test sub line 2 for root 1 |
    |  3 |      1 | test sub line 3 for root 1 |
    |  7 |      3 | test sub line 1 for root 3 |
    |  8 |      3 | test sub line 2 for root 3 |
    |  9 |      3 | test sub line 3 for root 3 |
    +----+--------+----------------------------+
    6 rows in set (0.01 sec)


    嗯,看subtb表中對應數據確實自動刪除了,測試成功。

    結論:在MySQL中利用外鍵實現級聯刪除成功!

                                                                        -----------轉帖:http://www.chinaunix.net/jh/17/462977.html
    posted on 2008-04-07 12:00 紫蝶∏飛揚↗ 閱讀(395) 評論(0)  編輯  收藏 所屬分類: 數據庫
    主站蜘蛛池模板: 亚洲精品中文字幕麻豆| 免费国产a国产片高清| 亚洲伦另类中文字幕| 亚洲精品偷拍视频免费观看| 亚洲国产香蕉人人爽成AV片久久| 亚洲色大成WWW亚洲女子| 永久免费看mv网站入口| 亚洲av无一区二区三区| 又色又污又黄无遮挡的免费视| 亚洲欧美日韩自偷自拍| 亚洲A丁香五香天堂网| 四虎永久在线精品免费一区二区| 亚洲成A人片在线观看无码3D| 一区二区视频免费观看| 亚洲人成人77777网站| 91精品全国免费观看含羞草| 亚洲宅男天堂a在线| 天天看片天天爽_免费播放| 久久亚洲中文字幕无码| 亚洲黄片手机免费观看| 国产成人AV片无码免费| 亚洲人成网站日本片| 日产乱码一卡二卡三免费| 色婷婷综合缴情综免费观看| 亚洲AV永久无码精品一百度影院 | 免费人成毛片动漫在线播放 | 亚洲av无码不卡私人影院| 国产免费AV片在线观看播放| 日韩精品亚洲人成在线观看| 歪歪漫画在线观看官网免费阅读| 亚洲高清毛片一区二区| 自拍偷自拍亚洲精品被多人伦好爽| 99爱免费观看视频在线| 亚洲AV噜噜一区二区三区| 亚洲国产成人精品无码区在线观看| 午夜免费1000部| 日本一区二区在线免费观看 | xxxxx免费视频| 日韩精品无码免费视频| 亚洲春色另类小说| 亚洲av无码不卡私人影院|