Dans SQL Server, j'ai une nouvelle colonne sur une table:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Cela échoue parce que je spécifie NOT NULL sans spécifier de contrainte par défaut. La table ne doit pas avoir de contrainte par défaut.
Pour contourner ce problème, je pourrais créer la table avec la contrainte par défaut, puis la supprimer.
Cependant, il ne semble pas y avoir de moyen de spécifier que la contrainte par défaut devrait être nommée dans le cadre de cette instruction. Mon seul moyen de m'en débarrasser est donc d'avoir une procédure stockée qui la recherche dans sys.default_constraints. table.
C'est un peu brouillon/verbeux pour une opération qui risque de se produire souvent. Quelqu'un a-t-il de meilleures solutions pour cela?
Cela devrait fonctionner:
ALTER TABLE t_tableName
ADD newColumn VARCHAR(50)
CONSTRAINT YourContraintName DEFAULT '' NOT NULL
ALTER TABLE t_tableName
ADD newColumn int NOT NULL
CONSTRAINT DF_defaultvalue DEFAULT (1)