Puis-je créer une contrainte par défaut nommée dans une instruction Ajouter une colonne dans SQL Server?
-
04-10-2019 - |
Question
Dans SQL Server, j'ai une nouvelle colonne sur une table:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Cela échoue parce que je précise NOT NULL sans spécifier une contrainte par défaut. Le tableau ne devrait pas avoir une contrainte par défaut.
Pour contourner ce problème, je pourrais créer la table avec la contrainte par défaut, puis retirez-le.
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 ma seule façon de se débarrasser de celui-ci est d'avoir une procédure stockée qui le recherche dans le Table sys.default_constraints.
Ceci est un peu désordonné / bavard pour une opération qui est susceptible de se produire beaucoup. Quelqu'un at-il de meilleures solutions pour cela?
La solution
Cela devrait fonctionner:
ALTER TABLE t_tableName
ADD newColumn VARCHAR(50)
CONSTRAINT YourContraintName DEFAULT '' NOT NULL
Autres conseils
ALTER TABLE t_tableName
ADD newColumn int NOT NULL
CONSTRAINT DF_defaultvalue DEFAULT (1)