मौजूदा टेबल पर ALTER TABLE ADD UNIQUE से कम्पोजिट यूनिक की जोड़ना
बनी हुई टेबल पर एकाधिक कॉलम पर यूनिक कंस्ट्रेंट जोड़ने के लिए ALTER TABLE ... ADD UNIQUE KEY उपयोग करें।
सिंटैक्स
ALTER TABLE yourTableName ADD UNIQUE KEY yourUniqueName (col1, col2, ...);
उदाहरण
CREATE TABLE makeCompositeKeyDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(40),
StudentAge INT,
StudentGrade CHAR(1)
);
कम्पोजिट यूनिक की जोड़ना
ALTER TABLE makeCompositeKeyDemo ADD UNIQUE KEY Name_Age_Grade (StudentName, StudentAge, StudentGrade);
सत्यापन
DESC makeCompositeKeyDemo;
+--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(40) | YES | MUL | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentGrade | char(1) | YES | | NULL | | +--------------+-------------+------+-----+---------+----------------+
Key कॉलम में MUL दर्शाता है कि कॉलम एक नॉन-यूनिक इंडेक्स (कम्पोजिट यूनिक का हिस्सा) में है।
SHOW CREATE TABLE से पूर्ण परिभाषा देखना
SHOW CREATE TABLE makeCompositeKeyDemo;
... UNIQUE KEY `Name_Age_Grade` (`StudentName`,`StudentAge`,`StudentGrade`) ...
महत्वपूर्ण नोट्स
- मौजूदा डेटा में डुप्लिकेट संयोजन होने पर एरर होगा — पहले डेटा साफ करें।
- कॉलम क्रम मायने रखता है:
(A, B, C)क्वेरीWHERE A=... AND B=... AND C=...के लिए ऑप्टिमल है। - यूनिक इंडेक्स नाम (
Name_Age_Grade) स्पष्ट रखें ताकि बाद मेंDROP INDEX Name_Age_Gradeआसान हो।