Lỗi này xảy ra bất cứ khi nào chúng ta thêm ràng buộc khóa ngoại giữa các bảng và chèn bản ghi vào bảng con. Hãy để chúng tôi xem một ví dụ.
Tạo bảng con.
mysql> create table ChildDemo -> ( -> id int, -> FKPK int -> ); Query OK, 0 rows affected (0.86 sec)
Tạo bảng thứ hai.
mysql> create table ParentDemo -> ( -> FKPK int, -> Name varchar(100) -> , -> primary key(FKPK) -> ); Query OK, 0 rows affected (0.57 sec)
Để thêm ràng buộc khóa ngoại.
mysql> alter table ChildDemo add constraint ConstChild foreign key(FKPK) references ParentDemo(FKPK); Query OK, 0 rows affected (1.97 sec) Records: 0 Duplicates: 0 Warnings: 0
Sau khi tạo ràng buộc khóa ngoại, bất cứ khi nào chúng ta chèn các bản ghi vào bảng đầu tiên hoặc bảng con, chúng ta sẽ gặp lỗi trên.
mysql> insert into ChildDemo values(1,3); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`business`.`childdemo`, CONSTRAINT `ConstChild` FOREIGN KEY (`FKPK`) REFERENCES `parentdemo` (`fkpk`))
Lỗi xảy ra khi bạn đang cố gắng thêm một hàng mà không có hàng nào phù hợp trong bảng khác.
Như đã nêu
“Các mối quan hệ khóa ngoại liên quan đến một bảng cha chứa các giá trị dữ liệu trung tâm và một bảng con có các giá trị giống hệt nhau trỏ về cha của nó. Mệnh đề NGOẠI KHÓA được chỉ định trong bảng con. Nó sẽ từ chối bất kỳ thao tác CHÈN hoặc CẬP NHẬT nào cố gắng tạo giá trị khóa ngoại trong bảng con nếu không có giá trị khóa ứng viên phù hợp trong bảng mẹ. ”