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


  1. जावा MySQL के साथ एक MySQL तालिका अपडेट करें

    इसके लिए आपको जावा में रेडीस्टेटमेंट को अपडेट के लिए इस्तेमाल करना होगा। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable(Id int, FirstName varchar(40));क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.62 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल वैल्यू (121, सैम) में डालें; क्वेरी

  1. MySQL में संदर्भ के रूप में किसी अन्य तालिका से केवल स्ट्रिंग्स का उपयोग करके तालिका में एक पंक्ति कैसे जोड़ें?

    इसके लिए MySQL में INSERT INTO SELECT स्टेटमेंट का इस्तेमाल करें। आइए एक टेबल बनाएं - ;क्वेरी ओके, 0 पंक्तियाँ प्रभावित (1.84 सेकंड) इंसर्ट कमांड की मदद से टेबल में कुछ रिकॉर्ड डालें - डेमो61 मानों में डालें(2,बॉब);क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.09 सेकंड) चयन कथन का उपयोग करके तालिका से रिकॉ

  1. MySQL में विदेशी कुंजी का उपयोग करना

    आइए समझें कि MySQL में विदेशी कुंजियों का उपयोग कैसे किया जा सकता है - InnoDB तालिकाएँ विदेशी कुंजी बाधाओं की जाँच का समर्थन करती हैं। केवल दो तालिकाओं में शामिल होने के लिए एक विदेशी कुंजी बाधा की आवश्यकता नहीं है। इसका उपयोग एक कॉलम को परिभाषित करते समय किया जा सकता है जिसका उपयोग इनो डीबी के अला