Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

두 개의 테이블이 MySQL FOREIGN KEY로 연결된 경우 하위 테이블에서 데이터 무결성이 유지된다고 어떻게 말할 수 있습니까?

<시간/>

실제로 외래 키는 데이터의 일관성과 무결성을 자동으로 유지하는 데 도움이 되는 참조 무결성을 적용합니다. 'customer'와 'orders'라는 두 개의 테이블을 예로 들어 이해할 수 있습니다. 여기서 'customer'는 상위 테이블이고 'orders'는 하위 테이블입니다. 존재하지 않는 고객에 대한 주문을 생성할 수 없습니다. 다음과 같이 두 테이블에 값을 삽입하여 증명할 수 있습니다. -

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)

이제 존재하지 않는 고객의 'orders' 테이블에 값을 삽입하려고 하면(id 10은 'customer' 테이블에 존재하지 않음) MySQL은 외래 키 제약 조건의 실패로 인해 다음과 같은 오류를 발생시킵니다. .

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`))