Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fügen Sie einer vorhandenen Tabelle in SQL Server eine Spalte mit einem Standardwert hinzu

Syntax:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Beispiel:

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.

Anmerkungen:

Optionaler Beschränkungsname:
Wenn Sie CONSTRAINT D_SomeTable_SomeCol weglassen dann generiert SQL Server automatisch
    einen Default-Contraint mit einem komischen Namen wie:DF__SomeTa__SomeC__4FB7FEF6

Optionale With-Values-Anweisung:
Der WITH VALUES wird nur benötigt, wenn Ihre Spalte nullfähig ist
    und Sie möchten, dass der Standardwert für vorhandene Datensätze verwendet wird.
Wenn Ihre Spalte NOT NULL ist , dann wird automatisch der Standardwert
    für alle vorhandenen Datensätze verwendet, unabhängig davon, ob Sie WITH VALUES angeben oder nicht.

So funktionieren Inserts mit einer Default-Constraint:
Wenn Sie einen Datensatz in SomeTable einfügen und nicht Geben Sie SomeCol an 's Wert, dann wird er standardmäßig auf 0 gesetzt .
Wenn Sie einen Datensatz einfügen und Geben Sie SomeCol an als NULL (und Ihre Spalte Nullen zulässt),
    dann wird die Default-Constraint nicht verwendet werden und NULL wird als Wert eingefügt.

Die Notizen basieren auf dem großartigen Feedback aller unten.
Besonderer Dank geht an:
    @Yatrix, @WalterStabosz, @YahooSerious und @StackMan für ihre Kommentare.