Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ข้อผิดพลาด MySQL 1452 - ไม่สามารถเพิ่มหรืออัปเดตแถวลูก:ข้อ จำกัด ของคีย์ต่างประเทศล้มเหลว?


ข้อผิดพลาดนี้เกิดขึ้นทุกครั้งที่เราเพิ่มข้อจำกัดของคีย์ภายนอกระหว่างตารางและแทรกระเบียนลงในตารางย่อย เรามาดูตัวอย่างกัน

การสร้างตารางลูก

mysql> create table ChildDemo
   -> (
   -> id int,
   -> FKPK int
   -> );
Query OK, 0 rows affected (0.86 sec)

กำลังสร้างตารางที่สอง

mysql> create table ParentDemo
   -> (
   -> FKPK int,
   -> Name varchar(100)
   -> ,
   -> primary key(FKPK)
   -> );
Query OK, 0 rows affected (0.57 sec)

เพื่อเพิ่มข้อจำกัดของคีย์ต่างประเทศ

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

หลังจากสร้างข้อจำกัดของคีย์ต่างประเทศ เมื่อใดก็ตามที่เราแทรกระเบียนลงในตารางแรกหรือตารางรอง เราจะได้รับข้อผิดพลาดข้างต้น

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

ข้อผิดพลาดเกิดขึ้นเมื่อคุณพยายามเพิ่มแถวที่ไม่มีแถวที่ตรงกันในตารางอื่น

ตามที่ระบุไว้

“ความสัมพันธ์ของคีย์ต่างประเทศเกี่ยวข้องกับตารางพาเรนต์ที่มีค่าข้อมูลส่วนกลาง และตารางย่อยที่มีค่าเหมือนกันที่ชี้กลับไปที่พาเรนต์ ประโยค FOREIGN KEY ระบุไว้ในตารางย่อย จะปฏิเสธการดำเนินการ INSERT หรือ UPDATE ที่พยายามสร้างค่าคีย์ต่างประเทศในตารางย่อยหากไม่มีค่าคีย์ตัวเลือกที่ตรงกันในตารางหลัก”