परिचय
MySQL में किसी कॉलम पर UNIQUE KEY कंस्ट्रेंट लगाकर डुप्लिकेट मानों को रोका जा सकता है। डुप्लिकेट डालने का प्रयास करने पर MySQL त्रुटि 1062 देता है।
उदाहरण: टेबल बनाना
mysql> CREATE TABLE DemoTable1553 (
-> EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName VARCHAR(20),
-> EmployeeSalary INT
-> );
Query OK, 0 rows affected (0.47 sec)
यूनिक की जोड़ना
mysql> ALTER TABLE DemoTable1553 ADD UNIQUE(EmployeeSalary);
Query OK, 0 rows affected (0.53 sec)
Records: 0 Duplicates: 0 Warnings: 0
डेटा डालना
mysql> INSERT INTO DemoTable1553(EmployeeName, EmployeeSalary) VALUES('Chris', 45000);
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable1553(EmployeeName, EmployeeSalary) VALUES('David', 35000);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1553(EmployeeName, EmployeeSalary) VALUES('Sam', 25000);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1553(EmployeeName, EmployeeSalary) VALUES('Carol', 45000);
ERROR 1062 (23000): Duplicate entry '45000' for key 'EmployeeSalary'
सफल रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable1553;
आउटपुट:
+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 1 | Chris | 45000 |
| 2 | David | 35000 |
| 3 | Sam | 25000 |
+------------+--------------+----------------+
3 rows in set (0.00 sec)
व्याख्या
ADD UNIQUE(EmployeeSalary)- EmployeeSalary कॉलम पर यूनिक कंस्ट्रेंट जोड़ता है- पहले तीन INSERT सफल
- चौथा INSERT (Carol, 45000) विफल क्योंकि 45000 पहले से मौजूद है (Chris)
- त्रुटि:
ERROR 1062 (23000): Duplicate entry '45000' for key 'EmployeeSalary'
यूनिक कंस्ट्रेंट बनाने के अन्य तरीके
-- टेबल बनाते समय
CREATE TABLE DemoTable (
Id INT PRIMARY KEY,
Email VARCHAR(100),
UNIQUE KEY uk_email (Email)
);
-- नामित यूनिक इंडेक्स
CREATE UNIQUE INDEX uk_email ON DemoTable(Email);
-- एकाधिक कॉलम पर यूनिक (कॉम्पोजिट)
ALTER TABLE DemoTable ADD UNIQUE uk_name_dept (Name, Department);
डुप्लिकेट हैंडलिंग विकल्प
INSERT IGNORE- त्रुटि के बजाय चुपचाप अनदेखा करेंINSERT ... ON DUPLICATE KEY UPDATE- मौजूदा पंक्ति अपडेट करेंREPLACE INTO- पुरानी हटाएं, नई डालें (प्राथमिक कुंजी पर)
UNIQUE कंस्ट्रेंट डेटा अखंडता लागू करने का मूलभूत तरीका है।