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

Dans le serveur SQL, pour ajouter une colonne avec une valeur par défaut à une table existante, utilisez la table ALTER. Nom de la colonne ADD avec la contrainte NULL/NOT NULL et la valeur DEFAULT.

La syntaxe de requête SQL Server ci-dessous peut être utilisée pour ajouter une colonne avec une valeur par défaut dans une table existante.

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

Prenons un exemple pour mieux comprendre.

Ajout d’une colonne non-nullable avec une valeur par défaut pour les enregistrements existants

Considérons une table Employee dans le serveur SQL, et si nous voulons ajouter une colonne de salaire minimum avec une valeur par défaut comme 1000USD, utilisez la requête ci-dessous.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL DEFAULT(1000)
GO

La requête ci-dessus ajoutera une nouvelle colonne MINIMUM_WAGE dans la table Employee et remplira la colonne dans les lignes existantes avec la valeur par défaut, c’est-à-dire 1000.

Parce que nous avons ajouté la contrainte NOT NULL.

Si vous n’ajoutez pas la contrainte NOT NULL, toutes les lignes existantes seront NULL et la valeur DEFAULT fournie n’aura aucun impact.

ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO

Toutes les valeurs de la colonne MINIMUM_WAGE seront NULL.

Vous devez ajouter la valeur DEFAULT si vous ajoutez la contrainte NOT NULL si la table n’est pas vide.

Par exemple, si la table Employee n’est pas vide et que vous ajoutez une nouvelle colonne avec la contrainte NOT NULL, une erreur se produira.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO

La requête sql server ci-dessus lancera l’erreur suivante en ajoutant une nouvelle colonne à la table existante.

ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'MINIMUM_WAGE' cannot be added to non-empty table 'Employee' because it does not satisfy these conditions.

Si la table Employee est vide.

La requête sql server ci-dessus ajoutera une nouvelle colonne sans aucun problème.

Ajout d’une colonne Nullable avec une valeur par défaut pour les enregistrements existants

Si vous voulez ajouter une colonne nullable avec une valeur par défaut pour les enregistrements existants, vous devez utiliser WITH VALUES dans la requête sql.

ALTER TABLE Employee
ADD MINIMUM_WAGE INT
CONSTRAINT Minimum_Pay DEFAULT 1000 WITH VALUES

La requête ci-dessus ajoutera une colonne nullable à la table du serveur sql avec la valeur par défaut pour les enregistrements existants.

Dans ce tutoriel, nous avons appris à ajouter une colonne nullable et non nullable à la table sql server avec une valeur par défaut pour tous les enregistrements existants.