Wie kann ich eine Spalte mit einem Standardwert zu einer bestehenden Tabelle in SQL-Server 2000 / SQL Server 2005 ?
Denken Sie daran, dass, wenn die Spalte nullbar ist, null der Wert ist, der für vorhandene Zeilen verwendet wird.
Wie kann ich eine Spalte mit einem Standardwert zu einer bestehenden Tabelle 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.
Optionaler Einschränkungsname:
Wenn Sie auslassen CONSTRAINT D_SomeTable_SomeCol
dann generiert SQL Server automatisch
ein Standard-Contraint mit einem lustigen Namen wie: DF__SomeTa__SomeC__4FB7FEF6
Optionale With-Values-Anweisung:
Die WITH VALUES
wird nur benötigt, wenn Ihre Spalte nullbar ist
und Sie möchten, dass der Standardwert für bereits vorhandene Datensätze verwendet wird.
Wenn Ihre Säule NOT NULL
dann wird automatisch der Standardwert verwendet.
für alle existierenden Datensätze, unabhängig davon, ob Sie WITH VALUES
oder nicht.
Wie Inserts mit einer Standard-Beschränkung funktionieren:
Wenn Sie einen Datensatz in SomeTable
und tun no Geben Sie an. SomeCol
Wertes, dann wird er standardmäßig auf 0
.
Wenn Sie einen Datensatz einfügen und Geben Sie an. SomeCol
Wert als NULL
(und Ihre Spalte erlaubt Nullen),
dann wird das Default-Constraint no verwendet werden und NULL
wird als Wert eingefügt.
Die Notizen beruhen auf dem großartigen Feedback, das wir unten erhalten haben.
Besonderen Dank an:
@Yatrix, @WalterStabosz, @YahooSerious, und @StackMan für ihre Kommentare.
Denken Sie daran, dass, wenn die Spalte nullbar ist, null der Wert ist, der für vorhandene Zeilen verwendet wird.
@Thecrocodilehunter Nullable column bedeutet, dass Sie Null für den Spaltenwert einfügen können. Wenn es sich nicht um eine nullable Spalte handelt, müssen Sie einen Wert dieses Datentyps einfügen. Bei vorhandenen Datensätzen wird also Null eingefügt, bei neuen Datensätzen wird Ihr Standardwert eingefügt, sofern nicht anders angegeben. Ist das sinnvoll?
Diese Antwort gefällt mir etwas besser als die von dbugger, weil sie die Standardbeschränkung explizit nennt. Eine Standardbeschränkung wird immer noch mit der Syntax von dbugger erstellt, aber ihr Name wird automatisch generiert. Die Kenntnis des genauen Namens ist beim Schreiben von DROP-CREATE-Skripten praktisch.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
12 Stimmen
Warum gibt es auf diese Frage 41 Antworten? Wenn ich sie durchsehe, sagen die meisten das Gleiche. Warum werden diese nicht entfernt? Diese Frage braucht nur maximal 3 Antworten.
0 Stimmen
ALTER TABLE SomeTable ADD SomeCol Bit NULL --O NOT NULL. CONSTRAINT D_SomeTable_SomeCol --Wenn ausgelassen, wird ein Default-Constraint Name automatisch generiert. DEFAULT (0)--Optionale Standard-Beschränkung. WITH VALUES --Hinzufügen, wenn die Spalte nullbar ist und Sie den Standardwert für existierende Datensätze haben wollen.
1 Stimmen
@MichaelZ. - 43 Antworten jetzt .....
1 Stimmen
Meiner Meinung nach entspricht diese Frage nicht den Mindestanforderungen an den Aufwand und hätte daher gestrichen werden müssen. @MichaelZ.
1 Stimmen
@JavierG.Raya, aber Sie haben eine neue Antwort erstellt und Sie schließen MYSQL ein. Sie sind Teil des Problems mit dieser Seite. Sie sollten Ihre Antwort löschen.
0 Stimmen
@JavierG.Raya Die Syntax von MYSQL stimmt nicht immer mit der von MSSQL überein, so dass die Bereitstellung einer Antwort für MySQL die Leute eher verwirrt. Es gibt 44 Antworten hier. Warum dachten Sie, dass es Ihre braucht? Es braucht sie nicht.