Foriegn Key 外來鍵

參考資料

這功能真心好用,當你有兩個資料表的 value 是互相對應的,你希望更動時兩者可以一致,

就替它設定 Foriegn Key, 可以下的參數有:

[ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

參數解釋:

  • CASCADE : 會將有所關聯的紀錄行也會進行刪除或修改。
  • SET NULL : 會將有所關聯的紀錄行設定成 NULL。
  • NO ACTION : 有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。
  • RESTRICT : 與 NO ACTION 相同。

不過預設是不做動作。

例如:

CREATE TABLE parent(
   id INT NOT NULL,
   PRIMARY KEY (id)
) TYPE = INNODB;

CREATE TABLE child(
   id INT,
   parent_id INT,
   INDEX par_ind (parent_id),
   FOREIGN KEY(parent_id) REFERENCES parent(id) ON DELETE CASCADE ON UPDATE CASADE
) TYPE = INNODB;

不過,在有被其他資料表關聯 Foreign Key 的情況下刪除資料時資料庫會發出警告 :

Cannot delete or update a parent row: a foreign key constraint fails

results matching ""

    No results matching ""