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

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

MySQL में INSERT ... ON DUPLICATE KEY UPDATE स्टेटमेंट का उपयोग करके, यदि रिकॉर्ड पहले से मौजूद है (डुप्लिकेट प्राइमरी की या यूनिक की), तो नया रिकॉर्ड डालने के बजाय मौजूदा रिकॉर्ड को अपडेट करें।

सिंटैक्स

INSERT INTO table_name (col1, col2, ...) VALUES (val1, val2, ...)
ON DUPLICATE KEY UPDATE col1 = new_val1, col2 = new_val2, ...;

व्यावहारिक उदाहरण

1. यूनिक की के साथ टेबल बनाएं

mysql> CREATE TABLE DemoTable733 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(100),
    StudentMarks INT,
    UNIQUE KEY Un_Name (StudentName)
);
Query OK, 0 rows affected (0.60 sec)

2. रिकॉर्ड्स डालें/अपडेट करें

mysql> INSERT INTO DemoTable733 (StudentName, StudentMarks) VALUES ('John', 45) ON DUPLICATE KEY UPDATE StudentMarks = 86;
Query OK, 1 row affected (0.19 sec)   -- नया रिकॉर्ड

mysql> INSERT INTO DemoTable733 (StudentName, StudentMarks) VALUES ('Adam', 65) ON DUPLICATE KEY UPDATE StudentMarks = 86;
Query OK, 1 row affected (0.15 sec)   -- नया रिकॉर्ड

mysql> INSERT INTO DemoTable733 (StudentName, StudentMarks) VALUES ('Carol', 75) ON DUPLICATE KEY UPDATE StudentMarks = 86;
Query OK, 1 row affected (0.08 sec)   -- नया रिकॉर्ड

mysql> INSERT INTO DemoTable733 (StudentName, StudentMarks) VALUES ('John', 45) ON DUPLICATE KEY UPDATE StudentMarks = 86;
Query OK, 2 rows affected (0.12 sec)  -- डुप्लिकेट! अपडेट हुआ (2 rows affected दर्शाता है)

3. परिणाम देखें

mysql> SELECT * FROM DemoTable733;
+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
| 1         | John        | 86           |  -- अपडेट हुआ (45 → 86)
| 2         | Adam        | 65           |  -- नया, अपडेट नहीं हुआ
| 3         | Carol       | 75           |  -- नया, अपडेट नहीं हुआ
+-----------+-------------+--------------+
3 rows in set (0.00 sec)

प्रभावित पंक्ति संख्या अर्थ

मानअर्थ
1नया रिकॉर्ड डाला गया
2मौजूदा रिकॉर्ड अपडेट किया गया
0कोई बदलाव नहीं (मान समान)

VALUES() फ़ंक्शन का उपयोग

INSERT INTO DemoTable733 (StudentName, StudentMarks) VALUES ('John', 90)
ON DUPLICATE KEY UPDATE StudentMarks = VALUES(StudentMarks);
-- डालने वाले मान (90) से अपडेट करता है, हार्डकोडेड 86 के बजाय

एकाधिक कॉलम्स अपडेट

INSERT INTO DemoTable733 (StudentName, StudentMarks) VALUES ('John', 95)
ON DUPLICATE KEY UPDATE 
    StudentMarks = VALUES(StudentMarks),
    LastUpdated = CURRENT_TIMESTAMP;

REPLACE INTO vs ON DUPLICATE KEY UPDATE

REPLACE INTOON DUPLICATE KEY UPDATE
पुरानी पंक्ति हटाता है, नई डालता हैमौजूदा पंक्ति अपडेट करता है
ऑटो-इन्क्रीमेंट आईडी बदल सकती हैआईडी अपरिवर्तित रहती है
सभी कॉलम्स निर्दिष्ट करने पड़ते हैंचुनिंदा कॉलम्स अपडेट कर सकते हैं
ट्रिगर: DELETE फिर INSERTट्रिगर: UPDATE

आवश्यक शर्तें

  • टेबल में PRIMARY KEY या UNIQUE INDEX होना चाहिए
  • डुप्लिकेट चेक इन कंस्ट्रेंट्स पर आधारित है
  • यदि कोई यूनिक कंस्ट्रेंट नहीं, तो हमेशा INSERT होगा
  1. - MySQL में INSERT ... ON DUPLICATE KEY UPDATE का सही सिंटैक्स

    MySQL में ON DUPLICATE KEY UPDATE का सही उपयोग INSERT ... ON DUPLICATE KEY UPDATE MySQL का एक शक्तिशाली एक्सटेंशन है जो डुप्लिकेट कुंजी संघर्ष होने पर मौजूदा पंक्ति को अपडेट करने की अनुमति देता है। इसे अपसर्ट (UPSERT - UPDATE + INSERT) भी कहा जाता है। सिंटैक्स INSERT INTO yourTableName VALUES (your

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

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

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

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