[sql] SQL Server의 기존 테이블에 기본값을 가진 열 추가

SQL Server 2000 / SQL Server 2005 의 기존 테이블에 기본값을 가진 열을 추가하려면 어떻게 해야합니까?



답변

통사론:

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

예:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

노트:

선택적 제약 조건 이름 :
생략 CONSTRAINT D_SomeTable_SomeCol하면 SQL Server는 다음
    과 같은 재미있는 이름으로 기본 제약 조건 을 자동 생성 합니다.DF__SomeTa__SomeC__4FB7FEF6

옵션으로-값 문 :
WITH VALUES만 열이 널 때 필요
    하고 가치가 레코드를 기존에 사용되는 기본을합니다.
열이 NOT NULL인 경우
    , 지정 여부에 관계없이 모든 기존 레코드 의 기본값을 자동으로 사용합니다 WITH VALUES.

삽입이 기본 제약 조건으로 작동하는 방법 :
레코드를 레코드에 삽입하고 값을 지정 SomeTable하지 않으면SomeCol 기본값이로 설정됩니다 0.
레코드 지정 하고SomeCol 의 값을 다음과 같이 지정 하면 NULL(열에 널이 허용됨)
    기본 제한 조건이 사용 되지 않고NULL 값으로 삽입됩니다.

메모는 아래의 모든 사람의 훌륭한 피드백을 바탕으로 작성되었습니다.
    의견을 주신 @Yatrix, @WalterStabosz, @YahooSerious 및 @StackMan에게
감사드립니다
.


답변

ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

DEFAULT를 포함하면 기존 행 의 열 이 기본값으로 채워 지므로 NOT NULL 제한 조건이 위반되지 않습니다.


답변

추가하면 널 열 , WITH VALUES특정 디폴트 값이 존재하는 행에 적용되도록한다 :

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES


답변

ALTER TABLE <table name>
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name>
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO


답변

ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'


답변

추가하는 열에 NOT NULL제약 조건이 있지만 DEFAULT제약 조건 (값) 이없는 경우주의하십시오 . 이 ALTER TABLE경우 테이블에 행이 있으면 명령문이 실패합니다. 해결책은 NOT NULL새 열에서 제약 조건을 제거하거나 제약 조건을 제공하는 DEFAULT것입니다.


답변

두 줄만있는 가장 기본적인 버전

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0