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

MySQL INSERT IGNORE को अनदेखा करें और डुप्लिकेट मान डालने पर त्रुटि प्रदर्शित करें

आइए पहले एक टेबल बनाते हैं:

mysql> create table DemoTable ( 
    FirstName varchar(100) ); 
Query OK, 0 rows affected (0.58 sec)

आधिकारिक MySQL डॉक्स के अनुसार, "IGNORE के बिना, एक पंक्ति जो टेबल में मौजूदा UNIQUE इंडेक्स या PRIMARY KEY मान को डुप्लिकेट करती है, डुप्लिकेट-कुंजी त्रुटि का कारण बनती है और स्टेटमेंट रद्द हो जाता है।"

इसलिए, आइए अब एक यूनिक इंडेक्स जोड़ें:

mysql> alter table DemoTable add unique index(FirstName); 
Query OK, 0 rows affected (0.50 sec)
Records: 0 Duplicates: 0 Warnings: 0

इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें। जैसा कि आप देख सकते हैं, चूंकि हमने INSERT IGNORE का उपयोग नहीं किया है, डुप्लिकेट रिकॉर्ड डालते समय त्रुटि दिखाई देगी:

mysql> insert into DemoTable values('Chris'); 
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Robert'); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David'); 
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Robert'); 
ERROR 1062 (23000): Duplicate entry 'Robert' for key 'FirstName'
mysql> insert into DemoTable values('Chris'); 
ERROR 1062 (23000): Duplicate entry 'Chris' for key 'FirstName'
mysql> insert into DemoTable values('Sam'); 
Query OK, 1 row affected (0.12 sec)

सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:

mysql> select * from DemoTable;

यह निम्नलिखिक आउटपुट देगा:

+-----------+
| FirstName |
+-----------+
| Chris     |
| David     |
| Robert    |
| Sam       |
+-----------+
4 rows in set (0.00 sec)

व्याख्या

  • UNIQUE INDEX कॉलम पर डुप्लिकेट मानों को रोकता है
  • डिफ़ॉल्ट रूप से (बिना IGNORE), डुप्लिकेट INSERT त्रुटि 1062 फेंकता है और रुक जाता है
  • INSERT IGNORE त्रुटि को चेतावनी में बदल देता है और जारी रखता है
  • यहां IGNORE नहीं उपयोग किया गया, इसलिए त्रुटि दिखाई दी और डुप्लिकेट नहीं डाले गए

INSERT IGNORE के साथ व्यवहार

INSERT IGNORE INTO DemoTable VALUES ('Robert'), ('Chris'), ('Sam');

कोई त्रुटि नहीं, केवल चेतावनी। डुप्लिकेट छोड़ दिए जाते हैं, नए (Sam) डाले जाते हैं।

ON DUPLICATE KEY UPDATE विकल्प

INSERT INTO DemoTable VALUES ('Robert') ON DUPLICATE KEY UPDATE FirstName='Robert';

मौजूदा पंक्ति अपडेट करता है (यहां कोई बदलाव नहीं)।

  1. - MySQL में GROUP BY HAVING से डुप्लिकेट कॉलम मान खोजें और प्रदर्शित करें

    किसी कॉलम में डुप्लिकेट मान (एक से अधिक बार आने वाले) खोजने के लिए GROUP BY और 1 का उपयोग करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1858 (ModelNumber VARCHAR(50)); डेटा डालें mysql> INSERT INTO DemoTable1858 VALUES(Audi A4), (Audi A6), (Audi A4), (Audi Q5), (Audi R8), (Audi Q5); डुप्लि

  1. - MySQL में LPAD और INSERT INTO SELECT का उपयोग करके अग्रणी शून्य के साथ मान डालें

    MySQL में अग्रणी शून्य के साथ क्रमिक ID उत्पन्न करना LPAD() फ़ंक्शन और INSERT INTO SELECT का उपयोग करके आप एक कॉलम में अग्रणी शून्य के साथ स्वरूपित मान (जैसे 001, 002, 003) स्वचालित रूप से उत्पन्न और डाल सकते हैं। टेबल बनाना ); Query OK, 0 rows affected (0.00 sec) LPAD के साथ INSERT INTO SELECT क

  1. Java में JDBC ResultSet से MySQL टेबल मान प्रदर्शित करें Java में JDBC ResultSet से MySQL टेबल मान प्रदर्शित करें

    टेबल और डेटा insert into demo87 values(John,21), (David,23), (Bob,22); Java कोड: ResultSet से HashMap में डेटा import java.sql.*; import java.util.*; import com.mysql.jdbc.Statement; public class TableValuesDemo { public static void main(String[] args) { Connection con = null;