Adăugarea unei coloane cu o valoare implicită la un tabel existent în SQL Server

Cum se poate adăuga o coloană cu o valoare implicită la un tabel existent în SQL Server 2000 / SQL Server 2005?

Soluția

Sintaxă:

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

Exemplu:

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.

Note:

Denumire opțională a constrângerii:
Dacă omiteți CONSTRAINT D_SomeTable_SomeCol, atunci SQL Server va genera automat
      o Default-Contraint cu un nume amuzant ca: DF__SomeTa__SomeC__4FB7FEF6

Declarație opțională With-Values:
Instrucțiunea WITH VALUES este necesară numai atunci când coloana dvs. este Nullable
      și doriți ca valoarea implicită să fie utilizată pentru înregistrările existente.
Dacă coloana dvs. este NOT NULL, atunci se va utiliza automat valoarea implicită
      pentru toate înregistrările existente, indiferent dacă specificați WITH VALUES sau nu.

Cum funcționează inserările cu o restricție implicită:
Dacă inserați o înregistrare în SomeTable și nu nu specificați valoarea SomeCol's, atunci aceasta va avea valoarea implicită 0.
Dacă inserați o înregistrare
și specificați valoarea SomeCol's ca NULL (și coloana dvs. permite nulități),
      atunci Default-Constraint
nu*** va fi utilizat și NULL va fi inserat ca valoare.

Notele s-au bazat pe feedback-ul minunat al tuturor de mai jos.
Mulțumiri speciale pentru:
    @Yatrix, @WalterStabosz, @YahooSerious și @StackMan pentru comentariile lor.

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

Includerea DEFAULT completează coloana în rândurile existente cu valoarea implicită, astfel încât constrângerea NOT NULL nu este încălcată.

Comentarii (8)
ALTER TABLE ADD ColumnName {Column_Type} Constraint

Articolul MSDN ALTER TABLE (Transact-SQL) conține toată sintaxa alter table.

Comentarii (0)