MySQL外鍵是在關系型數據庫中重要的約束之一,它可以通過引用另外一張表來保證數據的一致性。不同的存儲引擎對于外鍵支持的程度也有所不同。
InnoDB是MySQL默認的存儲引擎,也是最常用的,它支持外鍵以及級聯操作,包括 ON DELETE/ON UPDATE CASCADE, ON DELETE/ON UPDATE SET NULL, ON DELETE/ON UPDATE RESTRICT。這意味著當主表中的記錄更新或刪除時,外鍵表中也會更新或刪除相關的記錄。
而MyISAM存儲引擎則完全不支持外鍵,這個時候開發者需要靠代碼或觸發器來完成相同的邏輯。
CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE orders ( id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(id) ON UPDATE CASCADE ON DELETE SET NULL );
上述代碼演示了一個外鍵的例子,其中orders表中的customer_id字段引用了customers表中的id字段,使用了ON UPDATE CASCADE和ON DELETE SET NULL來實現級聯更新和級聯刪除的操作。