Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL ลบ Primary Key ด้วย ALTER TABLE DROP PRIMARY KEY

ใช้คำสั่ง 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