สิ่งหนึ่งที่ SQL Server ต่างจาก MySQL หรือโปรแกรม database อื่น ๆ คือ เมื่อต้องการเพิ่มคอลัมน์ในตารางเดิม มันทำได้เพียงเพิ่มในลำดับสุดท้ายของตารางเท่านั้น จัดเรียงตามที่ต้องการไม่ได้
ส่วน MariaDB หรือ MySQL ง่าย ๆ กว่าโดยใช้คำสั่ง SQL Server column เท่านั้นเอง
ALTER TABLE table_name
ADD COLUMN new_column_name data_type [column_constraints]
AFTER existing_column_name;
ส่วน SQL Server จะมีการทำมี่ซับซ้อนกว่านั้น โดย
- สร้าง table อีกตารางโดยมี column ที่มีโครงสร้างเหมือนกัน แต่ลำดับเป็นลำดับที่เรียงใหม่ หรือเพิ่ม column ใหม่
- copy data จากตารางเดิมไป ตารางใหม่โดย INSERT INTO SELECT โดยต้องทำให้ column ให้ตรงกันระหว่างตารางเก่าและใหม่
- เช็คข้อมูลว่าถูกต้องมั๋ย
- ลบ relation ตารางเก่า
- ลบตารางเก่า
- ทำ relation ใหม่
จะเห็นว่ามันวุ่นวายและพลาดได้ง่ายมาก ยังดีที่สามารถ config SQL Server Management Studio (SSMS) ให้ทำให้เราได้
- ไปที่เมนู Tools ที่ด้านบนของ SSMS
- เลือก Options
- ในหน้าต่าง Options ที่ปรากฏขึ้น ให้ขยายเมนู Designers
- เลือก Table and Database Designers
- หาตัวเลือก “Prevent saving changes that require table re-creation” แล้ว เอาเครื่องหมายถูกออก
- คลิก OK
จากนั้นไปที่ design ของตาราง
- backup และเช็คดี ๆ มันใช้ได้จริง ?
- เลือกตารางที่ต้องการแก้ใน design mode
- เพิ่มคอลัมน์ที่ต้องการ
- คลิกที่คอลัมน์ที่จะย้าย ด้านซ้ายสุดจะเห็นสามเหลี่ยมแสดงอยู่
- ลากขึ้นหรือลงไปที่จัดเรียงลำดับที่ต้องการ
- กด Save ด้านบน
- จะมี Safe Change Script ที่จะมี SQL Query ยาว ๆ มา
- ทางที่ดีคือ copy sql ไปทำเองที่ละขั้นตอน และ test เป็นชุด ๆ ไป อย่าลืมว่าข้อมูลสำคัญที่สุด แต่ถ้าเชื่อก็คลิก Yes
- ทดสอบทั้งโครงสร้างและข้อมูล
วิธีนี้มันจะสะดวกและผิดพลาดยากกว่าเขียน script เองเยอะ
About the author