[SQL Server] แก้ไขโครงสร้าง Table SSMS ขึ้น Saving changes is not permitted

สำหรับ DEV หรือ DBA มือใหม่ เมื่อได้สร้าง Table แล้ว เกิดต้องมีเหตุ กลับเข้ามาแก้ไขโครงสร้างของ Table อาจจะเกิดการ Change Requirement (จริงๆ จะแก้อะไรมันก็มาจากกรณีนี้เยอะมาก 555) หรือ ปรับโครงสร้างเพื่อเพิ่ม Performance เป็นต้น จะพบว่าตัว SQL Server เอง มันไม่ยอมให้เราแก้ไข โดยมี Message แจ้ง ดังรูป

Saving changes is not permitted. The changes you have made require the following
tables to be dropped and re-created. You have either made changes to a table that
can't be re-created or enabled the option Prevent saving changes that require the
table to be re-created.

ก่อนที่เราจะรู้วิธีการแก้ไข ผมว่าเรามารู้ถึงสาเหตุดีกว่า ทำไมตัว SQL Server ถึงไม่ให้ก่อนดีว่า เพราะเนื่องจากบาง Operation ต้องมีการ Re-Created Table ใหม่ ซึ่งส่งผลกับ Data เดิมที่มีอยู่ใน Table เนื่องจากในบางกรณี เช่น การเปลี่ยน Data type ของข้อมูลใหม่ ถ้าเป็นข้อมูลประเภทตัวเลข อาจจะส่งผลถึงค่าพวกทศนิยม หรือการปัดเป็นจำนวนเต็ม จนทำให้ข้อมูลผิดพลาดได้ เป็นต้น โดยกลุ่มของ Operation ที่สางผลให้มีการ Re-Created Table ใหม่ จากประสบการณ์ที่ผมเจอมา มีดังนี้

  • การกำหนด Primary key
  • เปลี่ยน data type ของ column
  • ขยายขนาดของ column เช่น nchar(100) ไปเป็น nchar(200)
  • สร้าง column ใหม่แล้วแทรกไปก่อนหน้า column เดิม
  • ลบ column
  • แก้ไขค่า null หรือ ค่า Default ของ column
  • เปลี่ยนลำดับของ column

พอรู้ถึงสาเหตุแล้ว ก็มาวิธีแก้ไขบ้าง โดยทำตามขั้นตอน ดังนี้

  • เข้าไปที่ SQL Management Studio
  • เลือก Menu Tools >> Options
  • จากนั้นมาที่ส่วน Designer เลือก checkbox "Prevent saving changes that require table re-creation" ออก ดังรูป

โดยตัวอย่างที่ผมได้ทดสอบ คือ การปรับแก้ Data Type ของ Column "OBJECTNAME" จากเดิม nchar(100) ไปเป็น nchar(200)

2014-12-05_17-31-39


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.