วิธีการเปลี่ยนขนาดคอลัมน์ของ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 NULL
NOT 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
เมทาดาทาจะดำเนินการเท่านั้น