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

เพิ่มสมาชิกในคอลัมน์ ENUM ของ MySQL ด้วย ALTER TABLE

แก้ไขคอลัมน์ ENUM เพิ่มค่าใหม่โดยไม่สูญเสียข้อมูล

ใช้ ALTER TABLE ... MODIFY COLUMN ระบุค่าเก่าครบถ้วน พร้อมค่าใหม่ที่ต้องการเพิ่ม

รูปแบบคำสั่ง (Syntax)

ALTER TABLE yourTableName 
MODIFY COLUMN yourColumnName ENUM('old1','old2',...,'new1','new2',...);

ตัวอย่างการใช้งาน

สร้างตาราง EnumDemo มี 2 ค่า:

CREATE TABLE EnumDemo (
    AllColors ENUM('RED', 'GREEN')
);

เพิ่มค่า YELLOW และ BLUE:

ALTER TABLE EnumDemo 
MODIFY COLUMN AllColors ENUM('RED', 'GREEN', 'YELLOW', 'BLUE');

ตรวจสอบโครงสร้าง:

SHOW CREATE TABLE EnumDemo;

ผลลัพธ์:

CREATE TABLE `enumdemo` (
  `AllColors` enum('RED','GREEN','YELLOW','BLUE') DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

ข้อควรระวัง

  • ต้องระบุค่าเก่าทั้งหมดครบถ้วน ไม่อาจเพิ่มแค่ค่าใหม่ได้
  • ลำดับค่ามีความสำคัญ (Index เริ่มจาก 1)
  • ไม่สามารถลบค่าที่มีข้อมูลอยู่ได้ (จะ Error)
  • การเปลี่ยนลำดับอาจส่งผลต่อค่าที่เก็บอยู่ (เก็บเป็น Index)

ทางเลือกอื่น: ใช้ VARCHAR + CHECK CONSTRAINT (MySQL 8.0.16+)

ALTER TABLE EnumDemo 
MODIFY COLUMN AllColors VARCHAR(20),
ADD CONSTRAINT chk_colors CHECK (AllColors IN ('RED','GREEN','YELLOW','BLUE','PURPLE'));

วิธีนี้ยืดหยุ่นกว่า เพิ่ม/ลบค่าได้ง่ายด้วย ALTER TABLE DROP/ADD CONSTRAINT