ใช้คำสั่ง ALTER TABLE ... DROP PRIMARY KEY เพื่อลบ Primary Key ออกจากตาราง
ตัวอย่างการใช้งาน
1. สร้างตารางมี Primary Key
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL,
StudentName VARCHAR(20),
StudentAge INT,
PRIMARY KEY(StudentId)
);
Query OK, 0 rows affected (0.48 sec)
2. ตรวจสอบโครงสร้าง (มี PRI)
mysql> DESC DemoTable; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | StudentId | int(11) | NO | PRI | NULL | | | StudentName | varchar(20) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+
3. ลบ Primary Key
mysql> ALTER TABLE DemoTable DROP PRIMARY KEY; Query OK, 0 rows affected (1.70 sec) Records: 0 Duplicates: 0 Warnings: 0
4. ตรวจสอบอีกครั้ง (PRI หายไป)
mysql> DESC DemoTable; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | StudentId | int(11) | NO | | NULL | | | StudentName | varchar(20) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+
ข้อควรระวัง
- ⚠️ ไม่สามารถลบ PK ได้ถ้ามี Foreign Key อ้างอิง ต้องลบ FK ก่อน
- ⚠️ หลังลบ PK คอลัมน์ยังคงเป็น
NOT NULL(ต้องMODIFYถ้าต้องการให้ NULL ได้) - ⚠️ ตารางจะไม่มี Primary Key อาจส่งผลต่อ Replication และ Performance
คำสั่งเพิ่มเติม
ลบ PK แล้วเพิ่ม PK ใหม่ (คอลัมน์เดียวหรือหลายคอลัมน์)
ALTER TABLE DemoTable DROP PRIMARY KEY, ADD PRIMARY KEY (StudentName, StudentAge);
เปลี่ยนคอลัมน์ PK ให้เป็น AUTO_INCREMENT (ต้อง Drop PK ก่อน)
ALTER TABLE DemoTable DROP PRIMARY KEY, MODIFY StudentId INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (StudentId);
สรุป
ALTER TABLE table_name DROP PRIMARY KEY ลบ PK ได้เลย ต้องระวัง FK Constraint และคอลัมน์จะยังคง NOT NULL อยู่ ต้อง MODIFY เพิ่มเติมหากต้องการเปลี่ยน Nullability