การใช้ ALTER TABLE ... MODIFY COLUMN ... AFTER
ใน MySQL คุณสามารถเปลี่ยนลำดับคอลัมน์ได้โดยใช้คำสั่ง ALTER TABLE ร่วมกับ MODIFY COLUMN และระบุตำแหน่งใหม่ด้วย AFTER column_name หรือ FIRST
รูปแบบคำสั่ง
ALTER TABLE your_table_name
MODIFY COLUMN your_column_name data_type AFTER other_column_name;
ตัวอย่างการใช้งานจริง
1. สร้างตารางสินค้า (ลำดับเดิม: ProductId, DeliveryDate, ProductName)
CREATE TABLE reOrderColumn (
ProductId INT,
DeliveryDate DATETIME,
ProductName VARCHAR(100)
);
2. ตรวจสอบโครงสร้างเดิม
DESC reOrderColumn;
| Field | Type | Null | Key | Default |
| ProductId | int(11) | YES | | NULL |
| DeliveryDate | datetime | YES | | NULL |
| ProductName | varchar(100) | YES | | NULL |
3. ย้าย DeliveryDate ไปหลัง ProductName
ALTER TABLE reOrderColumn
MODIFY COLUMN DeliveryDate DATETIME AFTER ProductName;
4. ตรวจสอบโครงสร้างใหม่
DESC reOrderColumn;
| Field | Type | Null | Key | Default |
| ProductId | int(11) | YES | | NULL |
| ProductName | varchar(100) | YES | | NULL |
| DeliveryDate | datetime | YES | | NULL |
ตัวเลือกตำแหน่งอื่นๆ
- FIRST: ย้ายไปเป็นคอลัมน์แรก:
MODIFY COLUMN col_name type FIRST
- AFTER col_name: ย้ายไปหลังคอลัมน์ที่ระบุ
- ไม่ระบุ: อยู่ตำแหน่งเดิม (เปลี่ยนแค่ Data Type/Attributes)
ข้อควรระวัง
- ⚠️ ต้องระบุ Data Type ครบถ้วน เดิม (รวม length, unsigned, zerofill, character set, collation)
- 🔒 ตารางจะถูก Lock ระหว่างการดำเนินการ (Metadata Lock)
- 💾 สร้าง Temporary Table ใหม่ภายใน → คัดลอกข้อมูล → เปลี่ยนชื่อ → ลบเก่า (อาจช้ากับตารางใหญ่)
- 🔧 ใช้
ALGORITHM=INPLACE ไม่ได้สำหรับการเปลี่ยนลำดับคอลัมน์ (ต้อง COPY)
- 💡 ทางเลือก: สร้าง View เรียงคอลัมน์ตามต้องการ แทนการ ALTER ตารางจริง