MySQL創建外鍵
在MySQL中,外鍵可以定義為一個列或列組合,它們是指向另一個表中的列的引用。外鍵的創建是非常常見的,特別是在設計復雜的數據庫結構時。
創建表并定義外鍵
假設有兩個表:orders和customers。orders表包含訂單信息,而customers表包含客戶信息。我們希望在orders表中定義一個外鍵,引用customers表中的客戶ID。以下是創建這些表并定義外鍵的MySQL代碼:
CREATE TABLE customers ( customer_id INT PRIMARY KEY, customer_name VARCHAR(100), customer_email VARCHAR(100) );
CREATE TABLE orders ( order_id INT PRIMARY KEY, order_date DATE, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
解析代碼
以上代碼創建了兩個表,customers和orders。在orders表中,customer_id被定義為用于關聯customers表的外鍵。備注:外鍵必須定義為被引用表(customers表)的主鍵,因此在customers表中,customer_id必須定義為PRIMARY KEY。
測試外鍵
為了測試外鍵是否成功,我們可以在orders表中嘗試添加一個customer_id,該ID不在customers表的customer_id列中。以下代碼演示了如何嘗試添加這樣的ID:
INSERT INTO orders (order_id, order_date, customer_id) VALUES (1, '2022-01-01', 5);
如果嘗試成功, MySQL會輸出以下錯誤: ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`database`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`))。
此錯誤表示嘗試添加外鍵失敗,因為customer_id 5在customers表中不可用。