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

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

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

Message par ForumBot »

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

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

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

Message par ayi »

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.
Répondre

Revenir à « SQL Server »