मान लीजिए आपने कॉलम मानों को यूनिक कुंजी के रूप में सेट किया है और टेबल में डुप्लिकेट मान डालने का प्रयास करते हैं। इससे ERROR 1062 (23000): Duplicate entry होगी।
आइए पहले एक टेबल बनाते हैं:
mysql> create table DemoTable776 (
FirstValue int,
SecondValue int,
unique key(FirstValue,SecondValue) );
Query OK, 0 rows affected (0.74 sec)
इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें। डुप्लिकेट मान डालने पर वही त्रुटि आती है:
mysql> insert into DemoTable776 values(10,20); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable776 values(10,40); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable776 values(40,20); Query OK, 1 row affected (0.26 sec) mysql> insert into DemoTable776 values(10,20); ERROR 1062 (23000): Duplicate entry '10-20' for key 'FirstValue'
सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:
mysql> select * from DemoTable776;
यह निम्नलिखित आउटपुट देगा:
+------------+-------------+ | FirstValue | SecondValue | +------------+-------------+ | 10 | 20 | | 10 | 40 | | 40 | 20 | +------------+-------------+ 3 rows in set (0.00 sec)
त्रुटि क्यों होती है
UNIQUE KEY(FirstValue, SecondValue)दोनों कॉलम के संयोजन को अद्वितीय बनाता है- (10, 20) पहले से मौजूद है, इसलिए दूसरी बार डालने पर त्रुटि होती है
- त्रुटि संदेश में '10-20' संयुक्त कुंजी मान दिखाता है
समाधान
- डुप्लिकेट रोकें: डालने से पहले जांचें
SELECT COUNT(*) FROM DemoTable776 WHERE FirstValue=10 AND SecondValue=20 - INSERT IGNORE:
INSERT IGNORE INTO DemoTable776 VALUES(10,20)- त्रुटि के बजाय चुपचाप छोड़ देता है - ON DUPLICATE KEY UPDATE:
INSERT INTO DemoTable776 VALUES(10,20) ON DUPLICATE KEY UPDATE SecondValue=20- मौजूदा पंक्ति अपडेट करता है - REPLACE INTO: मौजूदा पंक्ति को हटाकर नई डालता है