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

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

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

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

    下面,我們先創(chuàng)建以下測(cè)試用數(shù)據(jù)庫表:


    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、外鍵綁定關(guān)系這里使用了“ ON DELETE CASCADE”,意思是如果外鍵對(duì)應(yīng)數(shù)據(jù)被刪除,將關(guān)聯(lián)數(shù)據(jù)完全刪除,更多信息請(qǐng)參考MySQL手冊(cè)中關(guān)于InnoDB的文檔;

    好,接著我們?cè)賮聿迦霚y(cè)試數(shù)據(jù):


    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');
      

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


    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)


    嗯,一切都正常,好,下面我們要試驗(yàn)我們的級(jí)聯(lián)刪除功能了。

    我們將只刪除roottb表中id為2的數(shù)據(jù)記錄,看看subtb表中rootid為2的相關(guān)子紀(jì)錄是否會(huì)自動(dòng)刪除:


    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表中對(duì)應(yīng)數(shù)據(jù)確實(shí)自動(dòng)刪除了,測(cè)試成功。

    結(jié)論:在MySQL中利用外鍵實(shí)現(xiàn)級(jí)聯(lián)刪除成功!

                                                                        -----------轉(zhuǎn)帖:http://www.chinaunix.net/jh/17/462977.html
    posted on 2008-04-07 12:00 紫蝶∏飛揚(yáng)↗ 閱讀(395) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
    主站蜘蛛池模板: 亚洲欧洲精品成人久久曰影片| 亚洲成av人在线观看网站| 波多野结衣免费视频观看| 91免费国产在线观看| 三级黄色免费观看| 九九视频高清视频免费观看| 亚洲国产午夜精品理论片在线播放 | 国产精品视频免费一区二区| 久久国产精品免费观看| 国产精品免费视频观看拍拍| 欧美色欧美亚洲另类二区| 亚洲国产乱码最新视频| 亚洲色偷偷av男人的天堂| 亚洲人成亚洲人成在线观看| 啊v在线免费观看| 日韩中文字幕免费| 成人爽A毛片免费看| 噼里啪啦电影在线观看免费高清| 中文字幕免费观看| 亚洲视频在线免费观看| 毛片在线播放免费观看| 国产色爽免费无码视频| 中文字幕一区二区免费| 中文字幕永久免费视频| 成人免费777777被爆出| WWW免费视频在线观看播放| 国产精品免费一区二区三区| 国产99久久久久久免费看| 一级做a爰性色毛片免费| 一出一进一爽一粗一大视频免费的| 狼人大香伊蕉国产WWW亚洲| 亚洲AV无码一区二区大桥未久| 亚洲综合一区无码精品| 亚洲色一区二区三区四区| 亚洲精品无码成人| 亚洲AV无码成人网站在线观看 | 日本免费一区二区三区最新vr| 韩国日本好看电影免费看| 日韩一区二区三区免费体验| 国产成人免费片在线视频观看| 亚洲AV无码之日韩精品|