Comment puis-je ajouter une colonne avec une valeur par défaut à une table existante dans SQL Server 2000 / SQL Server 2005 ?
Gardez à l'esprit que si la colonne est nullable, null sera la valeur utilisée pour les lignes existantes.
Comment puis-je ajouter une colonne avec une valeur par défaut à une table existante dans SQL Server 2000 / SQL Server 2005 ?
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
Nom de la contrainte facultatif :
Si vous laissez de côté CONSTRAINT D_SomeTable_SomeCol
alors le serveur SQL générera automatiquement
une contrainte par défaut avec un nom amusant comme : DF__SomeTa__SomeC__4FB7FEF6
Déclaration facultative avec valeurs :
El WITH VALUES
n'est nécessaire que lorsque votre colonne est Nullable.
et vous voulez que la valeur par défaut soit utilisée pour les enregistrements existants.
Si votre colonne est NOT NULL
alors il utilisera automatiquement la valeur par défaut.
pour tous les enregistrements existants, que vous spécifiez WITH VALUES
ou pas.
Comment les insertions fonctionnent avec une contrainte par défaut :
Si vous insérez un enregistrement dans SomeTable
et faire no Précisez SomeCol
la valeur de l'utilisateur, alors il sera Défaut à 0
.
Si vous insérez un enregistrement y Précisez SomeCol
en tant que NULL
(et votre colonne autorise les nuls),
alors la contrainte par défaut sera no être utilisé et NULL
sera inséré comme valeur.
Les notes ont été basées sur les excellents commentaires de chacun ci-dessous.
Remerciements spéciaux à :
@Yatrix, @WalterStabosz, @YahooSerious, et @StackMan pour leurs commentaires.
Gardez à l'esprit que si la colonne est nullable, null sera la valeur utilisée pour les lignes existantes.
@RichardCollette ce qu'est une colonne nullable. Si mon type de données est int ou varchar, il prend toujours null pour les lignes existantes même si je spécifie une valeur par défaut. Cela signifie-t-il que la valeur par défaut ne s'applique qu'aux nouveaux enregistrements ?
@Thecrocodilehunter Une colonne nullable signifie que vous pouvez insérer un Null pour la valeur de la colonne. S'il ne s'agit pas d'une colonne nullable, vous devez insérer une valeur de ce type de données. Ainsi, pour les enregistrements existants, Null sera inséré dans ceux-ci et dans les nouveaux enregistrements, votre valeur par défaut sera insérée, sauf indication contraire. Cela vous paraît logique ?
Le problème avec cette réponse est que la valeur par défaut n'est valable que pour les nouveaux enregistrements. Les enregistrements existants auront toujours la valeur NULL.
Les colonnes des lignes existantes sont remplies avec la valeur par défaut. Un petit test empirique le prouvera.
C'est un point essentiel. Il est facile de supposer qu'une colonne avec une valeur de DEFAULT
aura toujours une valeur - c'est-à-dire qu'elle ne sera pas NULL, même si NOT NULL
n'est pas spécifié.
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.
1 votes
Et celui-ci aussi w3schools.com/sql/sql_alter.asp
0 votes
Comment cette question peut-elle avoir 41 réponses ? En la parcourant, la plupart d'entre elles disent la même chose. Pourquoi ne sont-elles pas supprimées ? Cette question ne nécessite que 3 réponses maximum.