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

MySQL में UNIQUE कंस्ट्रेंट और ON DUPLICATE KEY UPDATE का उपयोग करके डुप्लिकेट कुंजी पर अपडेट करना

MySQL में ON DUPLICATE KEY UPDATE के साथ अपसर्ट

MySQL का ON DUPLICATE KEY UPDATE क्लॉज आपको एक रिकॉर्ड डालने की अनुमति देता है, लेकिन यदि एक अद्वितीय कुंजी संघर्ष होता है, तो मौजूदा रिकॉर्ड को अपडेट करता है। इसके लिए लक्ष्य कॉलम पर UNIQUE कंस्ट्रेंट की आवश्यकता होती है।

उदाहरण: नाम पर अद्वितीय कंस्ट्रेंट के साथ स्कोर अपसर्ट

mysql> CREATE TABLE DemoTable1459 (
    -> Name VARCHAR(20),
    -> Score INT
    -> );
Query OK, 0 rows affected (0.72 sec)

-- अद्वितीय कंस्ट्रेंट जोड़ें (ON DUPLICATE KEY के लिए आवश्यक)
mysql> ALTER TABLE DemoTable1459 ADD CONSTRAINT Name_const UNIQUE (Name);
Query OK, 0 rows affected (1.09 sec)

ON DUPLICATE KEY UPDATE के साथ INSERT

mysql> INSERT INTO DemoTable1459 VALUES ('Chris', 57)
    -> ON DUPLICATE KEY UPDATE Score = Score + 10;
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO DemoTable1459 VALUES ('David', 89)
    -> ON DUPLICATE KEY UPDATE Score = Score + 10;
Query OK, 1 row affected (0.11 sec)

mysql> INSERT INTO DemoTable1459 VALUES ('Chris', 78)
    -> ON DUPLICATE KEY UPDATE Score = Score + 10;
Query OK, 2 rows affected (0.33 sec)

परिणाम

mysql> SELECT * FROM DemoTable1459;
+-------+-------+
| Name  | Score |
+-------+-------+
| Chris |    67 |
| David |    89 |
+-------+-------+
2 rows in set (0.00 sec)

व्याख्या

  1. पहला INSERT (Chris, 57): नई पंक्ति, स्कोर = 57
  2. दूसरा INSERT (David, 89): नई पंक्ति, स्कोर = 89
  3. तीसरा INSERT (Chris, 78): 'Chris' पर डुप्लिकेट कुंजी → UPDATE ट्रिगर → स्कोर = 57 + 10 = 67

नोट: VALUES क्लॉज में मान (78) उपेक्षित है; UPDATE अभिव्यक्ति Score = Score + 10 प्रबल होती है।

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

INSERT मान को UPDATE में संदर्भित करने के लिए:

INSERT INTO DemoTable1459 VALUES ('Chris', 78)
ON DUPLICATE KEY UPDATE Score = VALUES(Score) + 10;

यह 78 + 10 = 88 सेट करेगा (मौजूदा 57 के बजाय)।

आवश्यकताएं

  • टेबल में PRIMARY KEY या UNIQUE INDEX होना चाहिए
  • डुप्लिकेट चेक कंस्ट्रेंट कॉलम पर आधारित है
  • Affected rows: 1 = नया इंसर्ट, 2 = अपडेट

REPLACE INTO विकल्प

REPLACE INTO DemoTable1459 VALUES ('Chris', 78);
  • पुरानी पंक्ति हटाता है, नई डालता है
  • सभी कॉलम नए मानों पर रीसेट (डिफ़ॉल्ट लागू)
  • AUTO_INCREMENT बदल सकता है
  1. Java MySQL का उपयोग करके MySQL टेबल अपडेट करें Java MySQL का उपयोग करके MySQL टेबल अपडेट करें

    JDBC में PreparedStatement का उपयोग करके पैरामीटरीकृत अपडेट को सुरक्षित रूप से निष्पादित करें। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable(Id INT, FirstName VARCHAR(40)); Query OK, 0 rows affected (0.62 sec) INSERT INTO DemoTable VALUES(100,Chris),(111,Mike),(121,Sam); अपडेट से पहले SELECT

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

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

  1. - MySQL टेबल को बैच अपडेट कैसे करें?

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> BreakfastTime time -> ); Query OK, 0 rows affected (0.59 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(7:30:45); Query OK, 1 row affected (0.19 sec) mysql> insert i