यह त्रुटि तब आती है जब हम टेबल के बीच एक विदेशी कुंजी बाधा जोड़ते हैं और चाइल्ड टेबल में रिकॉर्ड डालते हैं। आइए एक उदाहरण देखें।
चाइल्ड टेबल बनाना।
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 ऑपरेशन को अस्वीकार कर देगा जो एक चाइल्ड टेबल में एक विदेशी कुंजी मान बनाने का प्रयास करता है यदि पैरेंट टेबल में कोई मेल खाने वाला उम्मीदवार कुंजी मान नहीं है। ”