วิธีการเปลี่ยนขนาดคอลัมน์ของsalaryคอลัมน์ในemployeeตารางจากnumeric(18,0)เป็นnumeric(22,5)
วิธีการเปลี่ยนขนาดคอลัมน์ของsalaryคอลัมน์ในemployeeตารางจากnumeric(18,0)เป็นnumeric(22,5)
คำตอบ:
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULLNOT NULLดังนั้นจะต้องมีการกล่าวถึงในแบบสอบถามอื่น ๆ โดยจะตั้งเป็นNULLค่าเริ่มต้น  ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
                    alter table Employee alter column salary numeric(22,5)ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)การทำงานALTER COLUMNโดยไม่ระบุคุณลักษณะNOT NULLจะส่งผลให้คอลัมน์เปลี่ยนเป็น nullable หากไม่มีอยู่แล้ว ดังนั้นคุณจะต้องตรวจสอบก่อนว่าคอลัมน์ที่เป็น nullable NOT NULLและหากไม่ได้ระบุแอตทริบิวต์ หรือคุณสามารถใช้คำสั่งต่อไปนี้ซึ่งตรวจสอบความถูกต้องของคอลัมน์ล่วงหน้าและเรียกใช้คำสั่งด้วยคุณสมบัติที่เหมาะสม
IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULLวิธีการที่น่าสนใจสามารถพบได้ที่นี่: วิธีการขยายคอลัมน์ของคุณโดยไม่หยุดทำงานโดย spaghettidba
หากคุณพยายามขยายคอลัมน์นี้ด้วยคำสั่ง“ ALTER TABLE” แบบตรงคุณจะต้องรอให้ SQLServer ผ่านทุกแถวและเขียนชนิดข้อมูลใหม่
ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;เพื่อเอาชนะความไม่สะดวกนี้มียาวิเศษขยายคอลัมน์ที่ตารางของคุณสามารถใช้และเรียกว่าการบีบอัดแถว (... ) ด้วยการบีบอัดแถวคอลัมน์ขนาดคงที่ของคุณสามารถใช้พื้นที่ที่ต้องการโดยชนิดข้อมูลที่เล็กที่สุดซึ่งข้อมูลจริงพอดี
เมื่อตารางถูกบีบอัดที่ROWระดับแล้วALTER TABLE ALTER COLUMNเมทาดาทาจะดำเนินการเท่านั้น