Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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)

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

mysql> insert into orders values(400, 'Notebook',10);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`) REFERENCES `customer` (`id`))

  1. मैं दो MySQL तालिकाओं को कैसे मर्ज कर सकता हूं?

    दो MySQL तालिकाओं को मर्ज करने के लिए, निम्न सिंटैक्स का उपयोग करें - INSERT IGNORE INTO yourTableName1 select *from yourTableName2; हम कुछ रिकॉर्ड के साथ दो टेबल बनाएंगे। उसके बाद उपरोक्त सिंटैक्स का उपयोग करके मर्ज प्रक्रिया शुरू हो जाएगी। पहली तालिका बनाना - mysql> create table MergeDemo1

  1. विभिन्न MySQL डेटाबेस में कॉलम के साथ दो तालिकाओं के बीच डेटा कैसे स्थानांतरित करें?

    इसके लिए आपको INSERT SELECT स्टेटमेंट का इस्तेमाल करना होगा। वाक्य रचना इस प्रकार है अपनेडेटाबेसनाम1 में डालें।आपकाटेबलनाम1(आपका कॉलमनाम1,आपका कॉलमनाम2,...N)अपना कॉलमनाम1,अपना कॉलमनाम2,...N चुनेंआपकेडेटाबेसनाम2.yourTableName2 से; यहाँ, मैं निम्नलिखित दो डेटाबेस का उपयोग कर रहा हूँ नमूना परीक्षण

  1. MySQL तालिका में अधिकतम आईडी से जुड़े डेटा को कैसे प्राप्त करें?

    हम पहले डीईएससी द्वारा ऑर्डर करेंगे और फिर अधिकतम आईडी से जुड़े मूल्य को प्राप्त करेंगे - अपने कॉलमनाम द्वारा अपनेTableName ऑर्डर से *चुनें DESC LIMIT 1,1; आइए पहले एक टेबल बनाएं - );क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.63 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल