MySQL是目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,但是它是否支持外鍵一直是廣受爭議的問題。下面我們來探討一下。
事實(shí)上,MySQL從5.1版本開始就支持外鍵了。使用外鍵可以保證數(shù)據(jù)的完整性,例如可以進(jìn)行級聯(lián)刪除等操作。在創(chuàng)建表的時(shí)候,可以通過使用FOREIGN KEY關(guān)鍵字來定義外鍵。例如:
CREATE TABLE orders( order_id INT PRIMARY KEY, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
上面的代碼創(chuàng)建了一張訂單表orders,指定了一個(gè)customer_id字段作為外鍵,它引用了另外一張客戶表customers的主鍵customer_id。這樣,當(dāng)在customers表中刪除了一個(gè)客戶時(shí),其對應(yīng)的訂單也會(huì)被級聯(lián)刪除。
但是需要注意的是,MySQL默認(rèn)情況下并不開啟外鍵約束。如果需要啟用外鍵約束,需要使用引擎類型為InnoDB的存儲(chǔ)引擎。例如:
CREATE TABLE orders( order_id INT PRIMARY KEY, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ) ENGINE=InnoDB;
上面的代碼將表orders指定了使用InnoDB引擎,這樣外鍵約束就會(huì)生效。
總的來說,MySQL是支持外鍵的,但是需要注意開啟外鍵約束這一點(diǎn),同時(shí)建議使用InnoDB引擎來保證外鍵約束的有效性。