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


Wie kann eine Spalte mit einem Standardwert zu einer vorhandenen Tabelle hinzugefügt werden? SQL Server 2000 / SQL Server 2005?


2291
2017-09-18 12:30


Ursprung


Antworten:


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 Einschränkungsname:
Wenn du weglässt CONSTRAINT D_SomeTable_SomeCol dann wird SQL Server automatisch generieren
ein Default-Contraint mit einem lustigen Namen wie: DF__SomeTa__SomeC__4FB7FEF6

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

Funktionsweise von Einfügungen mit einer Standardeinschränkung:
Wenn Sie einen Datensatz in einfügen SomeTable und TU nicht Angeben SomeCol's Wert, dann wird es Standard auf 0.
Wenn Sie einen Datensatz einfügen und Angeben SomeColder Wert als NULL (und Ihre Spalte erlaubt Nullen),
dann wird die Default-Constraint nicht verwendet werden und NULL wird als Wert eingefügt.

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


2917
2017-09-18 12:34



ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

Die Einbeziehung der STANDARD füllt die Spalte in bestehende Zeilen mit dem Standardwert, so dass die NOT NULL-Einschränkung nicht verletzt wird.


868
2017-09-18 12:31



Beim Hinzufügen eines NULL-fähige Spalte, WITH VALUES stellt sicher, dass der spezifische DEFAULT-Wert auf vorhandene Zeilen angewendet wird:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES

196
2018-04-12 17:40



ALTER TABLE <table name> 
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name> 
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO

115
2017-09-18 12:39



ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'

104
2017-08-05 03:28



Vorsicht, wenn die Spalte, die Sie hinzufügen, eine hat NOT NULL Einschränkung, hat aber keine a DEFAULT Einschränkung (Wert). Das ALTER TABLE Die Anweisung schlägt in diesem Fall fehl, wenn die Tabelle Zeilen enthält. Die Lösung besteht darin, entweder die NOT NULL Bedingung aus der neuen Spalte oder stellen Sie a DEFAULT Einschränkung für sie.


84
2017-09-24 16:03



Die einfachste Version mit nur zwei Zeilen

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

78
2018-05-25 14:50



Benutzen:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate smalldatetime NULL DEFAULT(GetDate())  
GO 

64
2017-12-09 17:45