Hoe kan een kolom met een standaardwaarde worden toegevoegd aan een bestaande tabel in 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.
Optional Constraint Name:
Als je CONSTRAINT D_SomeTable_SomeCol
weglaat dan genereert SQL Server automatisch
een Default-Contraint met een grappige Naam zoals: DF__SomeTa__SomeC__4FB7FEF6
Optional With-Values Statement:
De WITH VALUES
is alleen nodig als je kolom Nullable is
en je wilt dat de Default Value gebruikt wordt voor Bestaande Records.
Als je Kolom NOT NULL
is, dan zal automatisch de Default Value gebruikt worden
voor alle Bestaande Records, of je nu WITH VALUES
specificeert of niet.
Hoe inserties werken met een Default-Constraint:
Als je een Record in SomeTable
invoegt en niet de waarde van SomeCol
'specificeert, dan zal deze Default op 0
.
Als je een Record invoegt en de waarde van SomeCol
's als NULL
opgeeft (en je kolom staat nulls toe),
dan zal de Default-Constraint niet worden gebruikt en NULL
zal als waarde worden ingevoegd.
Opmerkingen zijn gebaseerd op iedereen's geweldige feedback hieronder.
Speciale dank aan:
@Yatrix, @WalterStabosz, @YahooSerious, and @StackMan for their Comments.
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
Het opnemen van DEFAULT vult de kolom in bestaande rijen met de standaardwaarde, zodat de NOT NULL restrictie niet wordt geschonden.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
Het MSDN artikel ALTER TABLE (Transact-SQL) heeft alle alter table syntaxis.