Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

यदि मैं MySQL पैरेंट टेबल से एक पंक्ति को हटा दूं तो क्या होगा?

<घंटा/>

मूल तालिका से पंक्ति को हटाते समय, यदि उस पंक्ति के डेटा का उपयोग चाइल्ड टेबल में किया जाता है, तो MySQL FOREIGN KEY बाधा की विफलता के कारण एक त्रुटि फेंक देगा। इसे 'ग्राहक' और 'आदेश' नाम की दो तालिकाओं के उदाहरण से समझा जा सकता है। यहां, 'ग्राहक' मूल तालिका है और 'आदेश' चाइल्ड टेबल है। हम 'ग्राहक' तालिका से चाइल्ड टेबल 'ऑर्डर' में उपयोग की जाने वाली एक पंक्ति को हटा नहीं सकते हैं। इसे मूल तालिका से मानों को इस प्रकार हटाकर प्रदर्शित किया जा सकता है -

mysql> Select * from Customer;
+----+--------+
| id | name   |
+----+--------+
| 1  | Gaurav |
| 2  | Raman  |
| 3  | Harshit|
| 4  | Aarav  |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from orders;
+----------+----------+------+
| order_id | product  | id   |
+----------+----------+------+
| 100      | Notebook | 1    |
| 110      | Pen      | 1    |
| 120      | Book     | 2    |
| 130      | Charts   | 2    |
+----------+----------+------+
4 rows in set (0.00 sec)

अब, मान लीजिए कि अगर हम पैरेंट टेबल 'ग्राहक' से आईडी =1 या आईडी =2 (चाइल्ड टेबल में इस्तेमाल की गई दोनों पंक्तियों के कारण) वाली पंक्ति को हटाने की कोशिश करेंगे, तो MySQL विदेशी की विफलता के कारण निम्नानुसार एक त्रुटि फेंकता है मुख्य बाधा।

mysql> Delete from customer where id = 1;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`)REFERENCES `customer` (`id`))

mysql> Delete from customer where id = 2;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`)REFERENCES `customer` (`id`))

  1. MySQL में किसी शर्त के आधार पर तालिका से केवल कुछ पंक्तियां हटाएं

    आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.60 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: डेमोटेबल मानों में डालें(104,कैरोल);क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.10 सेकंड) चयन कथन का उपयोग करके तालिका से सभी रिकॉर्ड प्रदर्शित करें - डेमोटेबल से *चुनें; यह

  1. एक ही क्वेरी में IN () के साथ MySQL तालिका से रिकॉर्ड हटाएं

    आइए एक टेबल बनाएं - टेबल बनाएं DemoTable1922 (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20));क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.00 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTable1922(StudentName) मानों (माइक) में डालें; क्वेरी ठीक है, 1 पंक्त

  1. डुप्लिकेट कैसे हटाएं और MySQL में तालिका में एक पंक्ति कैसे छोड़ें?

    डुप्लिकेट को हटाने और तालिका में एक पंक्ति छोड़ने के लिए, आपको अस्थायी तालिका की अवधारणा का उपयोग करने की आवश्यकता है। चरण इस प्रकार हैं - किसी भी अस्थायी तालिका नाम को अपने टेबलनाम से अलग अपने कॉलमनाम1 के रूप में बनाएं, अपने कॉलमनाम 2 को अपने टेबलनाम से अलग करें; अपने टेबल नाम को छोटा करें; अपने टे