Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

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 la contrainte facultative :
Si vous omettez CONSTRAINT D_SomeTable_SomeCol alors SQL Server générera automatiquement
    un Default-Contraint avec un drôle de nom comme :DF__SomeTa__SomeC__4FB7FEF6

Instruction With-Values ​​facultative :
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 , il utilisera automatiquement la valeur par défaut
   pour tous les enregistrements existants, que vous spécifiiez WITH VALUES ou pas.

Comment les inserts fonctionnent avec une contrainte par défaut :
Si vous insérez un enregistrement dans SomeTable et ne faites pas Spécifiez SomeCol , alors il sera par défaut à 0 .
Si vous insérez un enregistrement et Spécifiez SomeCol la valeur de NULL (et votre colonne autorise les valeurs nulles),
    alors la contrainte par défaut ne sera pas être utilisé et NULL sera inséré en tant que valeur.

Les notes étaient basées sur les excellents commentaires de chacun ci-dessous.
Merci tout particulièrement :
    @Yatrix, @WalterStabosz, @YahooSerious et @StackMan pour leurs commentaires.