การปรับขนาดคอลัมน์ใน SQL Server


คำตอบ:


507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL

6
ระวังถ้าคุณเปลี่ยนคอลัมน์ใน DataTable ขนาดใหญ่มาก คุณสามารถทำให้เกิดความผิดพลาด (ในสภาพแวดล้อมของฉันต่อไป)
DavidTheDev

55
สิ่งสำคัญคือหากคอลัมน์อยู่กับแอตทริบิวต์NOT NULLดังนั้นจะต้องมีการกล่าวถึงในแบบสอบถามอื่น ๆ โดยจะตั้งเป็นNULLค่าเริ่มต้น ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri

8
หากคุณมีดัชนีในคอลัมน์นั้นคุณจะต้องวางดัชนีจากนั้นดำเนินการแก้ไขรหัสตารางแล้วสร้างดัชนีอีกครั้ง
Sr.PEDRO



19

การทำงาน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

6

เลือกตาราง -> ออกแบบ -> เปลี่ยนค่าในชนิดข้อมูลที่แสดงในรูปต่อไปนี้

ป้อนคำอธิบายรูปภาพที่นี่

บันทึกการออกแบบตาราง


ตรวจสอบอย่างถูกต้องอาจเป็นเพราะคุณขาดขั้นตอน
arnav

7
เครื่องมือ -> ตัวเลือก ... /> นักออกแบบ -> นักออกแบบตารางและฐานข้อมูล - ยกเลิกการเลือก "ป้องกันการเปลี่ยนแปลงที่ต้องมีการสร้างตารางใหม่"
7 เครื่องมือ

สำหรับสิ่งส่วนใหญ่ฉันชอบการเขียนสคริปต์ แต่สำหรับการเปลี่ยนแปลงคอลัมน์ฉันชอบ UI ไม่จำเป็นต้องตรวจสอบ NOT NULL หรือการคำนวณใด ๆ หรือคุณสมบัติคอลัมน์เพิ่มเติม เพียงคลิกบันทึก (หลังจากคุณเปลี่ยนการตั้งค่าใน SSMS เป็น @ 7anner notes)
Jacob H

1

วิธีการที่น่าสนใจสามารถพบได้ที่นี่: วิธีการขยายคอลัมน์ของคุณโดยไม่หยุดทำงานโดย spaghettidba

หากคุณพยายามขยายคอลัมน์นี้ด้วยคำสั่ง“ ALTER TABLE” แบบตรงคุณจะต้องรอให้ SQLServer ผ่านทุกแถวและเขียนชนิดข้อมูลใหม่

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

เพื่อเอาชนะความไม่สะดวกนี้มียาวิเศษขยายคอลัมน์ที่ตารางของคุณสามารถใช้และเรียกว่าการบีบอัดแถว (... ) ด้วยการบีบอัดแถวคอลัมน์ขนาดคงที่ของคุณสามารถใช้พื้นที่ที่ต้องการโดยชนิดข้อมูลที่เล็กที่สุดซึ่งข้อมูลจริงพอดี

เมื่อตารางถูกบีบอัดที่ROWระดับแล้วALTER TABLE ALTER COLUMNเมทาดาทาจะดำเนินการเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.