답변:
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 COLUMN
속성을 언급하지 않고 실행 NOT NULL
하면 컬럼이 널 입력 가능으로 변경됩니다 (아직없는 경우). 따라서 먼저 열이 널 입력 가능인지 확인하고 그렇지 않은 경우 attribute를 지정해야합니다 NOT NULL
. 또는 다음 열을 사용하여 열의 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
메타 데이터 전용 조작입니다.