เพิ่ม Unique Constraint แบบหลายคอลัมน์ด้วย ALTER TABLE
ใช้ ALTER TABLE ... ADD UNIQUE สร้าง Composite Unique Key บนตารางที่มีอยู่แล้ว
ไวยากรณ์
ALTER TABLE yourTableName ADD UNIQUE yourUniqueName (col1, col2, ...);
ตัวอย่าง
CREATE TABLE makeCompositeKeyDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(40),
StudentAge INT,
StudentGrade CHAR(1)
);
เพิ่ม Unique Key
ALTER TABLE makeCompositeKeyDemo ADD UNIQUE 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 แสดงว่าอยู่ใน Index (Unique Key)
การทำงาน
- (John, 20, 'A') + (John, 20, 'A') → Error Duplicate
- (John, 20, 'B') → OK
- (John, 21, 'A') → OK
- (Jane, 20, 'A') → OK
ลบ Unique Key
ALTER TABLE makeCompositeKeyDemo DROP INDEX Name_Age_Grade;