如何設定主鍵和外鍵,實現串聯更新、串聯刪除

來源:互聯網
上載者:User

主鍵、外鍵和索引的區別?

  主鍵 外鍵 索引
定義: 唯一標識一條記錄,不能有重複的,不允許為空白 表的外鍵是另一表的主鍵, 外鍵可以有重複的, 可以是空值 該欄位沒有重複值,但可以有一個空值
作用: 用來保證資料完整性 用來和其他表建立聯絡用的 是提高查詢排序的速度
個數: 主鍵只能有一個 一個表可以有多個外鍵 一個表可以有多個惟一索引

設定索引

若要設定外鍵,在參照表(pc表)  和被參照表(parts表)中,相對應的兩個欄位必須都設定索引(index)。

對parts表:

ALTER TABLE parts ADD INDEX idx_model (model);
這句話的意思是,為parts表增加一個索引,索引建立在model欄位上,給這個索引起個名字叫idx_model。

對pc表也類似:

ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

定義外鍵

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

ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

FOREIGN KEY (cpumodel)

REFERENCES parts(model);

級聯操作

串聯更新:更新主鍵時,外鍵也隨之更新。

可以在定義外鍵的時候,在最後加入這樣的關鍵字:
ON UPDATE CASCADE;

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

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

ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

FOREIGN KEY (cpumodel)

REFERENCES parts(model)

ON UPDATE CASCADE;

串聯刪除:刪除主鍵時,外鍵也隨之刪除。

ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

FOREIGN KEY (cpumodel)

REFERENCES parts(model)

ON DELETE CASCADE;

串聯更新、刪除:

 on update cascade on delete cascade

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.