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. Java MySQL का उपयोग करके MySQL टेबल अपडेट करें Java MySQL का उपयोग करके MySQL टेबल अपडेट करें

    JDBC में PreparedStatement का उपयोग करके पैरामीटरीकृत अपडेट को सुरक्षित रूप से निष्पादित करें। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable(Id INT, FirstName VARCHAR(40)); Query OK, 0 rows affected (0.62 sec) INSERT INTO DemoTable VALUES(100,Chris),(111,Mike),(121,Sam); अपडेट से पहले SELECT

  1. - MySQL में INSERT INTO SELECT से दूसरी टेबल के स्ट्रिंग मान लेकर नई पंक्ति जोड़ें

    INSERT INTO SELECT सिंटैक्स insert into targetTable(columnName) select sourceColumn from sourceTable where condition; उदाहरण insert into demo62(employee_name) select name from demo61 where id=2; परिणाम +-------------+---------------+ | employee_id | employee_name | +-------------+---------------

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

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