MySQL में एक या अधिक VARCHAR कॉलम पर UNIQUE कंस्ट्रेंट लागू करके डुप्लिकेट मानों को रोका जा सकता है। संयुक्त (composite) यूनिक कंस्ट्रेंट कई कॉलम के संयोजन को अद्वितीय बनाता है।
सिंटैक्स
ALTER TABLE table_name
ADD UNIQUE (column1, column2, ...);
उदाहरण
कर्मचारी तालिका बनाएं:
mysql> CREATE TABLE DemoTable (
-> EmployeeId INT,
-> EmployeeName VARCHAR(20),
-> EmployeeCountryName VARCHAR(20)
-> );
संयुक्त UNIQUE कंस्ट्रेंट जोड़ें
mysql> ALTER TABLE DemoTable
-> ADD UNIQUE (EmployeeName, EmployeeCountryName);
डेटा डालें - डुप्लिकेट टेस्ट
mysql> INSERT INTO DemoTable VALUES (101, 'Adam', 'AUS'); -- OK
mysql> INSERT INTO DemoTable VALUES (102, 'John', 'US'); -- OK
mysql> INSERT INTO DemoTable VALUES (103, 'Adam', 'US'); -- OK (अलग देश)
mysql> INSERT INTO DemoTable VALUES (104, 'Adam', 'AUS'); -- ERROR!
त्रुटि
ERROR 1062 (23000): Duplicate entry 'Adam-AUS' for key 'EmployeeName'
परिणाम
+------------+--------------+---------------------+
| EmployeeId | EmployeeName | EmployeeCountryName |
+------------+--------------+---------------------+
| 101 | Adam | AUS |
| 102 | John | US |
| 103 | Adam | US |
+------------+--------------+---------------------+
मुख्य बिंदु
- संयुक्त UNIQUE कंस्ट्रेंट सभी कॉलम के संयोजन को अद्वितीय बनाता है
- अलग-अलग कॉलम में डुप्लिकेट मान अनुमत हैं
- मौजूदा डुप्लिकेट डेटा पर कंस्ट्रेंट जोड़ने से त्रुटि होगी
- तालिका निर्माण के समय भी परिभाषित किया जा सकता है:
UNIQUE KEY name (col1, col2)
उपयोग केस: ईमेल+डोमेन, उपयोगकर्ता नाम+कंपनी, SKU+वेयरहाउस जैसे संयोजनों के लिए।