MySQL外鍵是一種關系型數據庫技術,所謂外鍵就是一個表中的字段通過引用另一個表中的字段來建立起關聯關系。當定義外鍵時,MySQL限制插入或修改數據,確保數據的完整性。
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
上面的SQL語句定義了一個orders表,其中customer_id是一個外鍵,引用了另一個表customers的customer_id字段。這個外鍵關系確保orders表中的每個customer_id值都存在于customers表中。
MySQL對外鍵的檢查分為兩種模式:RESTRICT和CASCADE。默認情況下,系統采用RESTRICT模式來進行外鍵檢查。如果一個外鍵行即將被刪除或修改,但是在關聯表中仍有相應數據,那么系統會拋出一個錯誤并拒絕這個操作。
如果采用CASCADE模式,那么當主表的外鍵被更新或刪除時,從表中匹配的記錄也會被更新或刪除。這種方式適用于一些需要級聯操作的數據關系場景。
CREATE TABLE customers ( customer_id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50) ); CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE );
上面的SQL語句中,定義了一個CASCADE模式的外鍵關系。當從customers表中刪除一條記錄時,orders表中對應的記錄也會被自動刪除。