Comment ajouter une colonne, avec une valeur par défaut, dans une table SQL existante ?
Il est possible en SQL de définir une valeur par défaut quand on ajoute une colonne à une table.
Il est possible dans le langage SQL de définir une valeur par défaut lorsque l'on ajoute une colonne à une table. La directive ALTER TABLE est utilisée pour modifier une table SQL. Si on suit cette directive de la commande ADD, on peut ajouter une colonne à la table. Pour préciser que celle-ci possède une valeur par défaut, on utilise la directive CONSTRAINT qui ajoute une contrainte à la table. La contrainte de valeur par défaut se précise avec la directive DEFAULT :
ALTER TABLE maTable ADD maNouvelleColonne VARCHAR(200) DEFAULT 'valeurParDefaut'; //Tous les nouveaux enregistrements auront comme valeur par défaut la chaîne de caractères valeurParDefaut.
Le fait d'utiliser cette requête sur la base ajoutera bien la nouvelle colonne mais seuls les nouveaux enregistrements auront une valeur par défaut dans la base. Pour que les anciens enregistrements - qui auraient alors la valeur NULL - se voient aussi assigner une valeur par défaut, on peut ajouter la contrainte NOT NULL sur la colonne qui interdit les valeurs NULL. Les anciens enregistrements auront alors la valeur par défaut d'assignés, mais cela change la définition de la colonne. Pour assigner une valeur par défaut à tous les enregistrements sans changer la définition de la colonne, il suffit d'ajouter la contrainte WITH VALUES après la valeur par défaut :
ALTER TABLE maTable ADD maNouvelleColonne VARCHAR(200) NOT NULL DEFAULT 'valeurParDefaut'; //Méthode avec NOT NULL qui change la définition de la colonne.ALTER TABLE maTable ADD maNouvelleColonne VARCHAR(200) DEFAULT 'valeurParDefaut' WITH VALUES; //Méthode avec WITH VALUES qui ne change pas la définition de la colonne.