web-dev-qa-db-fra.com

Puis-je créer une contrainte nommée par défaut dans une instruction add column dans SQL Server?

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?

132
GlennS

Cela devrait fonctionner:

ALTER TABLE t_tableName 
    ADD newColumn VARCHAR(50)
    CONSTRAINT YourContraintName DEFAULT '' NOT NULL
192
Joe Stefanelli
ALTER TABLE t_tableName 
    ADD newColumn int NOT NULL
        CONSTRAINT DF_defaultvalue DEFAULT (1)
83
Mitch Wheat