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

Puis-je ajouter une colonne non nulle sans valeur DEFAULT

Non, vous ne pouvez pas.

Parce que si vous le pouviez, SQL ne saurait pas quoi mettre comme valeur dans les enregistrements déjà existants. Si vous n'aviez aucun enregistrement dans la table, cela fonctionnerait sans problème.

Le moyen le plus simple de procéder consiste à créer la colonne avec une valeur par défaut, puis à supprimer la valeur par défaut.

ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn

Une autre alternative serait d'ajouter la colonne sans la contrainte, de remplir les valeurs de toutes les cellules et d'ajouter la contrainte.