MySQL में डुप्लिकेट रिकॉर्ड को संभालने का सबसे कुशल तरीका INSERT ... ON DUPLICATE KEY UPDATE स्टेटमेंट है। यह डुप्लिकेट की त्रुटि से बचाता है और मौजूदा रिकॉर्ड को अपडेट करता है।
सिंटैक्स
INSERT INTO टेबल_नाम (कॉलम1, कॉलम2, ...)
VALUES (मान1, मान2, ...)
ON DUPLICATE KEY UPDATE
कॉलम1 = नया_मान1,
कॉलम2 = नया_मान2, ...;
उदाहरण
1. यूनिक कंस्ट्रेंट के साथ टेबल बनाएं
mysql> CREATE TABLE DemoTable (
-> Id INT,
-> Name VARCHAR(20),
-> UNIQUE(Id, Name)
-> );
2. डेटा डालें (डुप्लिकेट हैंडलिंग के साथ)
mysql> INSERT INTO DemoTable VALUES(101, 'Chris')
-> ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
Query OK, 1 row affected
mysql> INSERT INTO DemoTable VALUES(102, 'Mike')
-> ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
Query OK, 1 row affected
mysql> INSERT INTO DemoTable VALUES(101, 'Chris')
-> ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
Query OK, 2 rows affected -- डुप्लिकेट मिला, अपडेट हुआ
3. परिणाम देखें
mysql> SELECT * FROM DemoTable;
+-------+--------+ | Id | Name | +-------+--------+ | 102 | Mike | | 10001 | Robert | +-------+--------+
क्यों यह बेहतर है?
- एटॉमिक ऑपरेशन: इंसर्ट और अपडेट एक ही क्वेरी में
- रेस कंडीशन मुक्त: concurrent access में सुरक्षित
- प्रदर्शन: अलग SELECT + INSERT/UPDATE से तेज़
- सरल कोड: एप्लिकेशन लॉजिक सरल रहता है
ध्यान दें
यूनिक इंडेक्स या प्राइमरी की होना आवश्यक है ताकि MySQL डुप्लिकेट का पता लगा सके।