MySQL इंसर्ट पर डुप्लिकेट और अनदेखा करें

MySQL टेबल प्राइमरी कीज़ और यूनीक इंडेक्स एक ही इंडेक्स के साथ कई पंक्तियों को टेबल पर जोड़े जाने से रोकते हैं। यदि आप एक मानक INSERT स्टेटमेंट के साथ डुप्लिकेट पंक्ति सम्मिलित करने का प्रयास करते हैं, तो आप एक त्रुटि का सामना करेंगे और सम्मिलित विफल हो जाएगा।

MySQL मानक INSERT स्टेटमेंट के लिए कई विकल्प प्रदान करता है और प्रत्येक डुप्लिकेट पंक्तियों को थोड़ा अलग तरीके से हैंडल करता है: "INSERT IGNORE, " "INSERT ... ON DUPLATE KEY UPDATE, " और "REPLACE।"

प्राथमिक कुंजी और अद्वितीय अनुक्रमित

प्राथमिक कुंजी इंडेक्स और "UNIQUE" इंडेक्स बाधाओं को इंडेक्स कॉलम (ओं) में एक अद्वितीय मान सम्‍मिलित करने के लिए हर पंक्ति की आवश्‍यकता होती है, जिससे प्रत्येक पंक्ति को उसकी प्राथमिक कुंजी या UNIQUE इंडेक्स बाधा स्तंभ (मान) में पहचाने जाने की अनुमति मिलती है।

यदि कोई सामान्य INSERT एक पंक्ति सम्मिलित करने का प्रयास करता है जिसमें प्राथमिक कुंजी या UNIQUE बाधा सूचकांक में एक डुप्लिकेट मान होता है, तो इंसर्ट विफल हो जाएगा, संभवतः पूरे लेन-देन को वापस कर देगा।

INSERT IGNORE

INSERT IGNORE INSERT की तरह ही पंक्तियों को सम्मिलित करेगा, लेकिन इस अपवाद के साथ कि यह डुप्लिकेट मानों वाली पंक्तियों को अनदेखा कर देगा और त्रुटि पैदा किए बिना निष्पादन जारी रखेगा। ऐसी कोई भी पंक्ति जिसमें कोई डुप्लिकेट मान सम्मिलित है; उदाहरण के लिए:

INSERT IGNORE INTO my_table (unique_index_column, other_column) VALUES (1, 'अन्य मूल्य');

INSERT ... DUPLICATE प्रमुख अद्यतन पर

INSERT ... DUPLICATE KEY पर कोई सामान्य डुप्लिकेट पंक्तियाँ सामान्य रूप से सम्मिलित करेगा। हालाँकि, जब यह एक डुप्लिकेट पंक्ति का सामना करता है, तो यह मूल पंक्ति पर एक अद्यतन करेगा; उदाहरण के लिए:

INSERT में my_table (unique_index_column, other_column) VALUES (1, 'अन्य मान') DUPLICATE KEY पर अद्यतन करें अन्य_column = 'डुप्लिकेट अद्यतन मान';

बदलने के

REPLACE INSERT के समान काम करता है, सिवाय इसके कि जब वह एक डुप्लिकेट पंक्ति का सामना करता है, तो यह मूल पंक्ति को हटा देता है और फिर इन्सर्ट के साथ जारी रहता है। डुप्लीकेट यूनिक इंडेक्स वैल्यू वाली कोई भी पंक्ति उस पंक्ति को बदल देगी जिसमें मूल रूप से वैल्यू निहित होती है; उदाहरण के लिए:

रिपोर्ट में my_table (unique_index_column, other_column) VALUES (1, 'अधिक मान))

लोकप्रिय पोस्ट