191 votes

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 dans une table:

ALTER TABLE t_tableName 
    ADD newColumn NOT NULL

Cela échoue, car je spécifie PAS la valeur NULL sans spécifier une contrainte par défaut. La table ne doit pas avoir de contrainte par défaut.

Pour contourner ce problème, j'ai pu créer la table avec la contrainte par défaut, puis l'enlever.

Cependant, il ne semble pas être un moyen de spécifier que la contrainte par défaut devrait être nommé dans le cadre de cette déclaration, donc mon seul moyen de se débarrasser de, il est d'avoir une procédure stockée qui regarde vers le haut dans le sys.default_constraints table.

C'est un peu brouillon/verbose pour une opération qui est susceptible de se produire beaucoup. Quelqu'un at-il de meilleures solutions pour cela?

267voto

Joe Stefanelli Points 72874

Cela devrait fonctionner:

 ALTER TABLE t_tableName 
    ADD newColumn VARCHAR(50)
    CONSTRAINT YourContraintName DEFAULT '' NOT NULL
 

122voto

Mitch Wheat Points 169614
ALTER TABLE t_tableName 
    ADD newColumn int NOT NULL
        CONSTRAINT DF_defaultvalue DEFAULT (1)

0voto

GlennS Points 1426

Je pourrais créer la colonne sans NOT NULL, exécuter une mise à jour à la date existante, puis modifier la colonne pour avoir le NOT NULL. Je suis préoccupé par les implications en termes de performances, par exemple, si cela se trouvait sur une table de plusieurs millions de lignes. Cela semble donc loin d'être idéal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X