[轉]mysql如何設置主鍵和外鍵,實現級聯更新、級聯刪除


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

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

設置索引

若要設置外鍵,在參照表(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

原文出處:http://www.phpdadao.com/386.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM