समाधान: संयुक्त UNIQUE कंस्ट्रेंट
एकाधिक कॉलम के संयोजन को अद्वितीय बनाने के लिए टेबल बनाते समय या बाद में UNIQUE कंस्ट्रेंट का उपयोग करें।
टेबल बनाते समय सिंटैक्स
CREATE TABLE yourTableName (
yourColumnName1 datatype,
yourColumnName2 datatype,
yourColumnName3 datatype,
UNIQUE yourConstraintName(yourColumnName2, yourColumnName3)
);
व्यावहारिक उदाहरण
UNIQUE कंस्ट्रेंट के साथ टेबल बनाना
mysql> CREATE TABLE UniqueDemo (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(100),
-> StudentAge INT,
-> StudentMarks INT,
-> UNIQUE age_NameConstraint(StudentName, StudentAge)
-> );
Query OK, 0 rows affected (0.76 sec)
कंस्ट्रेंट देखना
mysql> SHOW INDEX FROM UniqueDemo;
परिणाम
| Table | Non_unique | Key_name | Column_name |
|---|---|---|---|
| uniquedemo | 0 | PRIMARY | StudentId |
| uniquedemo | 0 | age_NameConstraint | StudentName |
| uniquedemo | 0 | age_NameConstraint | StudentAge |
महत्वपूर्ण बिंदु
- संयुक्त कंस्ट्रेंट कॉलम के संयोजन को अद्वितीय बनाता है, व्यक्तिगत कॉलम को नहीं
- उदाहरण: (John, 20) और (John, 21) दोनों अनुमत हैं, लेकिन (John, 20) दो बार नहीं
- कंस्ट्रेंट नाम वैकल्पिक है (MySQL स्वचालित रूप से उत्पन्न करता है)
- मौजूदा टेबल पर:
ALTER TABLE ... ADD UNIQUE ...
परीक्षण
INSERT INTO UniqueDemo(StudentName, StudentAge) VALUES('John', 20); -- सफल
INSERT INTO UniqueDemo(StudentName, StudentAge) VALUES('John', 20); -- त्रुटि 1062
INSERT INTO UniqueDemo(StudentName, StudentAge) VALUES('John', 21); -- सफल