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

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

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

    隨筆-28  評論-15  文章-81  trackbacks-0
     

    定義數據表

    假如某個電腦生產商,它的數據庫中保存著整機和配件的產品信息。用來保存整機產品信息的表叫做pc;用來保存配件供貨信息的表叫做parts

    pc表中有一個字段,用來描述這款電腦所使用的CPU型號;在parts表中相應有一個字段,描述的正是CPU的型號,我們可以把它想成是全部CPU的型號列表。

    很顯然,這個廠家生產的電腦,其使用的CPU一定是供貨信息表(parts)中存在的型號。這時,兩個表中就存在一種約束關系(constraint)——pc表中的CPU型號受到parts表中型號的約束。

    首先我們來創建parts表:

    CREATE TABLE parts (

    ...
    字段定義 ...,

    model VARCHAR(20) NOT NULL,

    ... 字段定義 ...

    );

    接下來是PC表:

    CREATE TABLE pc (

    ...
    字段定義 ...,

    cpumodel VARCHAR(20) NOT NULL,

    ... 字段定義 ...

    };

    設置索引

    若要設置外鍵,在參照表 (referencing table,即pc) 和被參照表(referenced table,即parts)中,相對應的兩個字段必須都設置索引(index)

    parts表:

    ALTER TABLE parts ADD INDEX idx_model (model);

    這句話的意思是,為parts表增加一個索引,索引建立在model字段上,給這個索引起個名字叫idx_model

    pc表也類似:

    ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

    事實上這兩個索引可以在創建表的時候就設置。這里只是為了突出其必要性。

    定義外鍵

    下面為兩張表之間建立前面所述的那種約束。因為pcCPU型號必須參照parts表中的相應型號,所以我們將pc表的cpumodel字段設置為外鍵”(FOREIGN KEY),即這個鍵的參照值來自于其他表。

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

    FOREIGN KEY (cpumodel)

    REFERENCES parts(model);

    第一行是說要為pc表設置外鍵,給這個外鍵起一個名字叫做fk_cpu_model;第二行是說將本表的cpumodel字段設置為外鍵;第三行是說這個外鍵受到的約束來自于parts表的model字段。

    這樣,我們的外鍵就搞好了!如果我們試著CREATE一臺pc,它所使用的CPU的型號是parts 表中不存在的,那么MySQL會禁止這臺PCCREATE出來。

    級聯操作

    考慮以下這種情況:

    技術人員發現,一個月之前輸入到parts表中的某個系列的cpu(可能有很多款)的型號全都輸錯了一個字母,現在需要改正。我們希望的是,當parts表中那些 Referenced Column 有所變化時,相應表中的 Referencing Column 也能自動更正。

    可以在定義外鍵的時候,在最后加入這樣的關鍵字:

    ON UPDATE CASCADE;

    即在主表更新時,子表(們)產生連鎖更新動作,似乎有些人喜歡把這個叫級聯操作。

    如果把這語句完整的寫出來,就是:

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

    FOREIGN KEY (cpumodel)

    REFERENCES parts(model)

    ON UPDATE CASCADE;

    除了CASCADE外,還有RESTRICT(禁止主表變更)SET NULL

    posted on 2007-10-18 03:21 譚明 閱讀(332) 評論(0)  編輯  收藏 所屬分類: MySQL

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 三年片在线观看免费观看大全中国| 亚洲午夜无码久久久久小说| 亚欧国产一级在线免费| 国产成人精品免费视频软件| 亚洲国产欧美日韩精品一区二区三区 | 国产精品视频免费观看| 亚洲精品在线观看视频| 久久午夜无码免费| 亚洲免费视频网站| 国产妇乱子伦视频免费| 亚洲免费二区三区| 最近2019中文字幕免费看最新| 亚洲精品无码久久久久APP | 日韩国产欧美亚洲v片 | 在线播放免费人成视频在线观看| 伊人久久五月丁香综合中文亚洲| 成年午夜视频免费观看视频| 亚洲av无码专区亚洲av不卡| 国产免费观看青青草原网站| 日日摸夜夜添夜夜免费视频| 亚洲精品无码专区久久久| 久久免费公开视频| 亚洲av片不卡无码久久| 免费看大美女大黄大色| 特级毛片免费播放| 亚洲第一成年男人的天堂| 69免费视频大片| 亚洲日本在线电影| 亚洲国产中文v高清在线观看| 本免费AV无码专区一区| 久久亚洲AV成人出白浆无码国产| 国内精品乱码卡1卡2卡3免费| 亚洲AV无码国产一区二区三区| 亚洲精品tv久久久久| 99精品视频在线观看免费播放 | 亚洲天堂男人天堂| 四虎影视免费在线| 中文字幕乱码系列免费| 亚洲国产av一区二区三区丶| 亚洲精品一级无码中文字幕 | 在线观看日本免费a∨视频|