Comment ajouter une colonne avec une valeur par défaut à une table existante dans SQL Server ?

Comment ajouter une colonne avec une valeur par défaut à une table existante dans SQL Server ?

Syntaxe :

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

Exemple :

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.

Remarques :

Nom de contrainte optionnel :

Si vous omettez CONSTRAINT D_SomeTable_SomeCol, alors SQL Server générera automatiquement

un nom de contrainte par défaut avec un nom bizarre comme : `DF__SomeTa__SomeC__4FB7FEF6`

Instruction With-Values optionnelle :

Le WITH VALUES n’est nécessaire que lorsque votre colonne est Nullable

et que vous souhaitez que la valeur par défaut soit utilisée pour les enregistrements existants.

Si votre colonne est NOT NULL, alors la valeur par défaut sera automatiquement utilisée

pour tous les enregistrements existants, que vous spécifiiez `WITH VALUES` ou non.

Comment les insertions fonctionnent avec une contrainte par défaut :

Si vous insérez un enregistrement dans SomeTable et que vous ne spécifiez pas la valeur de SomeCol, alors elle prendra la valeur par défaut 0.

Si vous insérez un enregistrement et que vous spécifiez la valeur de SomeCol comme NULL (et que votre colonne autorise les nulls),

alors la contrainte par défaut ne sera ***pas*** utilisée et `NULL` sera inséré comme valeur.

Les remarques ont été basées sur les excellents retours de chacun ci-dessous.

Remerciements spéciaux à :

@Yatrix, @WalterStabosz, @YahooSerious et @StackMan pour leurs commentaires.