Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

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

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 vincolo facoltativo:
Se ometti CONSTRAINT D_SomeTable_SomeCol quindi SQL Server genererà automaticamente
    un vincolo predefinito con un nome divertente come:DF__SomeTa__SomeC__4FB7FEF6

Dichiarazione con valori facoltativa:
Il WITH VALUES è necessario solo quando la colonna è annullabile
    e si desidera utilizzare il valore predefinito per i record esistenti.
Se la colonna è NOT NULL , utilizzerà automaticamente il valore predefinito
    per tutti i record esistenti, indipendentemente dal fatto che tu specifichi WITH VALUES oppure no.

Come funzionano gli inserti con un vincolo predefinito:
Se inserisci un record in SomeTable e non Specifica SomeCol 's valore, quindi il valore predefinito sarà 0 .
Se inserisci un Record e Specifica SomeCol 's come NULL (e la tua colonna consente valori nulli),
    quindi il vincolo predefinito non essere utilizzato e NULL verrà inserito come Valore.

Le note si basavano sull'ottimo feedback di tutti di seguito.
Un ringraziamento speciale a:
    @Yatrix, @WalterStabosz, @YahooSerious e @StackMan per i loro commenti.