Hvordan kan en kolonne med en standardverdi legges til en eksisterende tabell i 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:
Hvis du utelater CONSTRAINT D_SomeTable_SomeCol
, vil SQL Server autogenerere
en Default-Contraint med et morsomt navn som: DF__SomeTa__SomeC__4FB7FEF6
Optional With-Values Statement:
WITH VALUESer bare nødvendig når kolonnen er Nullable<br /> og du vil at standardverdien skal brukes for eksisterende poster.<br /> Hvis kolonnen din er
NOT NULL, vil den automatisk bruke standardverdien<br /> for alle eksisterende poster, enten du angir
WITH VALUES` eller ikke.
Hvordan Inserts fungerer med en Default-Constraint:
Hvis du setter inn en Record i SomeTable
og ikke spesifiserer SomeCol
's verdi, vil den som standard settes til 0
.
Hvis du setter inn en Record og Spesifiser SomeCol
's verdi som NULL
(og kolonnen tillater null),
vil Default-Constraint ikke bli brukt, og NULL
vil bli satt inn som Value.
Notater var basert på alles gode tilbakemeldinger nedenfor.
Spesiell takk til:
@Yatrix, @WalterStabosz, @YahooSerious og @StackMan for deres kommentarer.
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
Inkluderingen av DEFAULT fyller kolonnen i eksisterende rader med standardverdien, slik at NOT NULL-begrensningen ikke brytes.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
MSDN-artikkelen ALTER TABLE (Transact-SQL) inneholder hele syntaksen for alter table.