Computer >> Máy Tính >  >> Lập trình >> MySQL

Điều gì xảy ra nếu tôi xóa một hàng khỏi bảng mẹ MySQL?

Trong khi xóa hàng khỏi bảng mẹ, nếu dữ liệu của hàng đó được sử dụng trong bảng con thì MySQL sẽ xuất hiện lỗi do ràng buộc FOREIGN KEY không thành công. Nó có thể được hiểu với ví dụ về hai bảng có tên là ‘khách hàng’ và ‘đơn đặt hàng’. Ở đây, ‘khách hàng’ là bảng mẹ và ‘đơn đặt hàng’ là bảng con. Chúng tôi không thể xóa một hàng được sử dụng trong bảng con "đơn hàng" khỏi bảng "khách hàng". Nó có thể được chứng minh bằng cách xóa các giá trị khỏi bảng mẹ như sau -

mysql> Select * from Customer;
+----+--------+
| id | name   |
+----+--------+
| 1  | Gaurav |
| 2  | Raman  |
| 3  | Harshit|
| 4  | Aarav  |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from orders;
+----------+----------+------+
| order_id | product  | id   |
+----------+----------+------+
| 100      | Notebook | 1    |
| 110      | Pen      | 1    |
| 120      | Book     | 2    |
| 130      | Charts   | 2    |
+----------+----------+------+
4 rows in set (0.00 sec)

Bây giờ, giả sử nếu chúng ta cố gắng xóa hàng có id =1 hoặc id =2 (vì cả hai hàng được sử dụng trong bảng con) khỏi bảng mẹ 'khách hàng', thì MySQL sẽ đưa ra một lỗi như sau do lỗi ngoại ràng buộc chính.

mysql> Delete from customer where id = 1;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`)REFERENCES `customer` (`id`))

mysql> Delete from customer where id = 2;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`)REFERENCES `customer` (`id`))