मौजूदा टेबल पर ALTER TABLE ... ADD PRIMARY KEY का उपयोग करके एकाधिक कॉलम पर कंपोजिट (संयुक्त) PRIMARY KEY सेट की जा सकती है।
उदाहरण
Room_allotment टेबल बनाकर id और Name पर कंपोजिट PK जोड़ना:
mysql> CREATE TABLE Room_allotment(Id INT, Name VARCHAR(20), RoomNo INT); Query OK, 0 rows affected (0.20 sec) mysql> DESCRIBE Room_allotment; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | Id | int(11) | YES | | NULL | | | Name | varchar(20) | YES | | NULL | | | RoomNo | int(11) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+
कंपोजिट PRIMARY KEY जोड़ें
mysql> ALTER TABLE Room_allotment ADD PRIMARY KEY(Id, Name); Query OK, 0 rows affected (0.29 sec) mysql> DESCRIBE Room_allotment; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | Id | int(11) | NO | PRI | 0 | | | Name | varchar(20) | NO | PRI | | | | RoomNo | int(11) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+
परिवर्तनों का सारांश
| कॉलम | पहले | बाद में |
|---|---|---|
| Id | Null=YES, Key=खाली | Null=NO, Key=PRI |
| Name | Null=YES, Key=खाली | Null=NO, Key=PRI |
| RoomNo | Null=YES, Key=खाली | Null=YES, Key=खाली |
पूर्व शर्तें
Id, Nameका संयोजन अद्वितीय होना चाहिए (कोई डुप्लिकेट पंक्ति नहीं)
<ली>दोनों कॉलम में NULL मान नहीं होने चाहिए
- टेबल में पहले से PRIMARY KEY नहीं होनी चाहिए
कंपोजिट PK का व्यवहार
(Id, Name)जोड़ी अद्वितीय पहचानकर्ता बन जाती है
<ली>व्यक्तिगत कॉलम में डुप्लिकेट हो सकते हैं, लेकिन जोड़ी नहीं
- इस टेबल को रेफरेंस करने वाली FK में भी दो कॉलम होंगे
हटाना
ALTER TABLE Room_allotment DROP PRIMARY KEY;