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

MySQL में INSERT...ON DUPLICATE KEY UPDATE लागू करना

परिचय

जब आप किसी टेबल में नई पंक्ति डालते हैं और वह पंक्ति UNIQUE इंडेक्स या PRIMARY KEY में डुप्लिकेट का कारण बनती है, तो MySQL त्रुटि देता है। इस समस्या को हल करने के लिए ON DUPLICATE KEY UPDATE क्लॉज का उपयोग किया जाता है। इससे मौजूदा पंक्ति नए मानों से अपडेट हो जाती है।

उदाहरण: टेबल और यूनिक इंडेक्स बनाना

mysql> CREATE TABLE DemoTable (
    -> Value INT
    -> );
Query OK, 0 rows affected (0.61 sec)
mysql> CREATE UNIQUE INDEX value_index ON DemoTable(Value);
Query OK, 0 rows affected (0.77 sec)
Records: 0  Duplicates: 0  Warnings: 0

ON DUPLICATE KEY UPDATE के साथ डेटा डालना

mysql> INSERT INTO DemoTable VALUES(40) ON DUPLICATE KEY UPDATE Value = Value + 1000;
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES(50) ON DUPLICATE KEY UPDATE Value = Value + 1000;
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(40) ON DUPLICATE KEY UPDATE Value = Value + 1000;
Query OK, 2 rows affected (0.15 sec)

व्याख्या:

  • पहली दो क्वेरीज नए मान 40 और 50 डालती हैं
  • तीसरी क्वेरी 40 को फिर से डालने का प्रयास करती है, लेकिन चूंकि 40 पहले से मौजूद है (यूनिक इंडेक्स के कारण), यह मौजूदा मान को 40 + 1000 = 1040 में अपडेट कर देती है
  • 2 rows affected का अर्थ है: 1 पंक्ति डाली गई होती, लेकिन 1 पंक्ति अपडेट हुई

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-------+
| Value |
+-------+
| 50    |
| 1040  |
+-------+
2 rows in set (0.00 sec)

उपयोग के मामले

  • काउंटर बढ़ाने के लिए
  • अपसर्ट (UPSERT) ऑपरेशन के लिए
  • डुप्लिकेट कुंजी त्रुटियों से बचने के लिए

ON DUPLICATE KEY UPDATE MySQL का एक शक्तिशाली फीचर है जो डेटा अखंडता बनाए रखते हुए डुप्लिकेट हैंडलिंग को सरल बनाता है।

  1. - MySQL में ट्रिगर के साथ INSERT कमांड पर टेबल अपडेट करना

    परिचय MySQL ट्रिगर डेटाबेस ऑब्जेक्ट हैं जो विशिष्ट घटनाओं (INSERT, UPDATE, DELETE) पर स्वचालित रूप से निष्पादित होते हैं। यह लेख दिखाता है कि कैसे एक टेबल में INSERT होने पर दूसरी टेबल को स्वचालित रूप से अपडेट करने के लिए AFTER INSERT ट्रिगर बनाया जाए। उदाहरण: दो टेबल बनाना ); Query OK, 0 rows aff

  1. - MySQL में डुप्लिकेट रिकॉर्ड बदलने के लिए INSERT ON DUPLICATE KEY UPDATE का उपयोग

    MySQL में डुप्लिकेट रिकॉर्ड को संभालने का सबसे कुशल तरीका INSERT ... ON DUPLICATE KEY UPDATE स्टेटमेंट है। यह डुप्लिकेट की त्रुटि से बचाता है और मौजूदा रिकॉर्ड को अपडेट करता है। सिंटैक्स INSERT INTO टेबल_नाम (कॉलम1, कॉलम2, ...) VALUES (मान1, मान2, ...) ON DUPLICATE KEY UPDATE कॉलम1 = नया_मान1,

  1. - MySQL में प्राइमरी की कैसे रीसेट करें?

    MySQL में ऑटो-इन्क्रीमेंट प्राइमरी की को रीसेट (1 से शुरू) करने के लिए, TRUNCATE TABLE का उपयोग करें जो डेटा हटाता है और ऑटो-इन्क्रीमेंट काउंटर रीसेट करता है, या ALTER TABLE से मैन्युअली सेट करें। विधि 1: TRUNCATE TABLE (सबसे सरल, डेटा हटाता है) टेबल बनाएं: mysql> CREATE TABLE DemoTable1929 (