Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khóa ngoại (FOREIGN KEY) trong MySQL đảm bảo toàn vẹn dữ liệu bảng con như thế nào?

Khóa ngoại (FOREIGN KEY) thực thi tính toàn vẹn tham chiếu (referential integrity), tự động duy trì sự nhất quán dữ liệu giữa bảng cha và bảng con.

Ví dụ: customer (cha) và orders (con)

mysql> SELECT * FROM Customer;
+----+--------+
| id | name   |
+----+--------+
| 1  | Gaurav |
| 2  | Raman  |
| 3  | Harshit|
| 4  | Aarav  |
+----+--------+

mysql> SELECT * FROM orders;
+----------+----------+------+
| order_id | product  | id   |
+----------+----------+------+
| 100      | Notebook | 1    |
| 110      | Pen      | 1    |
| 120      | Book     | 2    |
| 130      | Charts   | 2    |
+----------+----------+------+

Thử chèn đơn hàng cho khách hàng không tồn tại (id=10):

mysql> INSERT INTO orders VALUES(400, 'Notebook', 10);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`) REFERENCES `customer` (`id`))

MySQL chặn việc tạo hàng con với khóa ngoại không tồn tại ở bảng cha, đảm bảo toàn vẹn dữ liệu.