記得 MySQL 預設是不支援 Foreign Key 的功能,但其實 MySQL 中有相關的套件了,只是沒有開啟而已,InnoDB 是 MySQL 上第一個提供外鍵約束的表引擎。
如何啟動:請在 my.ini 中將 skip-innodb 這行用 # 號註解掉。
引用範例:
CREATE TABLE parent( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE = INNODB; CREATE TABLE child( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY(parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE = INNODB; -- 參數: [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
當關聯 父資料表 的主鍵紀錄行被 刪除 或 修改 時,InnoDB 對 子資料表 中紀錄行的處理方式:
CASCADE - 會將有所關聯的紀錄行也會進行刪除或修改。