Aggiungere una colonna con un valore predefinito a una tabella esistente in SQL Server

Come si può aggiungere una colonna con un valore predefinito a una tabella esistente in SQL Server 2000 / SQL Server 2005?

Soluzione

Sintassi:

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

Esempio:

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:

Nome opzionale del vincolo:
Se lasciate fuori CONSTRAINT D_SomeTable_SomeCol allora SQL Server genererà automaticamente
    un Default-Contraint con un nome divertente come: DF__SomeTa__SomeC__4FB7FEF6

Dichiarazione opzionale With-Values:
Il WITH VALUES è necessario solo quando la tua colonna è Nullable
    e vuoi che il valore predefinito sia usato per i record esistenti; Se la tua colonna è NON NULL, allora userà automaticamente il valore di default
    per tutti i record esistenti, sia che tu specifichi WITH VALUES o no.

Come funzionano gli inserimenti con un Default-Constraint:
Se inserisci un record in QualcheTabella e non non specifichi il valore di QualcheCol, allora sarà Predefinito a 0; Se inserisci un record e specifichi il valore di SomeCol'come NULL (e la tua colonna permette i null),
    allora il Default-Constraint non sarà usato e NULL sarà inserito come valore.

Le note sono state basate sul grande feedback di tutti qui sotto.
Ringraziamenti speciali a:
    @Yatrix, @WalterStabosz, @YahooSerious, e @StackMan per i loro commenti.

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

L'inclusione del DEFAULT riempie la colonna nelle righe esistenti con il valore predefinito, quindi il vincolo NOT NULL non viene violato.

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

L'articolo MSDN ALTER TABLE (Transact-SQL) ha tutta la sintassi di alter table.

Commentari (0)