2009-12-22 10 views
17

Ich habe eine Tabelle, die ich eine Bit-Spalte hinzufügen möchte, die ich für alle vorhandenen Daten standardmäßig auf false festlegen möchte.Wie füge ich einer Tabelle in SQL Server eine Spalte hinzu, die Nullen nicht zulässt?

Wie ändere ich meine Tabelle so, dass ich NOT NULL angeben kann, bevor ich false für meine vorhandenen Zeilen eingefügt habe?

Soll ich es als Nullable erstellen, tun Sie eine Einfügung, als es nicht Nullable schalten?

+0

Das ist ein Weg, ja. –

Antwort

41

Sie könnten die Spalte und geben Sie den Standardwert für alle bestehenden verwendet werden Reihen.

ALTER TABLE foo 
ADD bar bit 
DEFAULT 0 NOT NULL; 
+4

Normalerweise nenne ich meine Einschränkung - selbst Standardbedingungen - für den Fall, dass ich sie später ablegen muss. Die Standardnamen "DF__TimeZones__IsUsa__3D5E1FD2" sind ein bisschen schwer zu merken ..... –

0

Ich habe es auch getan, wie Sie sagen "Erstellen Sie es als Nullable, tun Sie eine Einfügung, als es nicht NULL-fähig". Ich hatte kein Problem damit.

Ich habe noch nicht erforderlich, einen besseren Weg zu finden, aber ich bin neugierig, ob es eine andere Möglichkeit ist ....

0

ich in der Regel das Feld als NULL festlegbare mit einem Standard als falsch in Ihrem Fall aktualisieren Sie alle Felder erstellen, die vor dann in der Datenbank waren es wechseln auf null

1
ALTER TABLE dbo.MyTable ADD MyColumn bit NOT NULL DEFAULT 0 

Für was es wert ist, Sie können den Enterprise Manager starten, die Änderungen in der Benutzeroberfläche vornehmen und anschließend ein Change Script generieren lassen - und Sie können sehen, wie diese Art von Aufgaben ausgeführt werden.

3
ALTER TABLE foo ADD bar bit DEFAULT 0 NOT NULL WITH VALUES; 

Die Klausel "mit Werten" repliziert den Standardwert in vorhandenen Zeilen.

+1

@marc_s, ich habe es einfach ohne "WITH VALUES" für meine Bitspalte ausgeführt und es hat funktioniert. Bist du sicher? – KingNestor

+1

@KingNestor, versuchen Sie es mit einem Standardwert von 1, oder etwas, das nicht alle binären Nullen ist. –

+4

WITH VALUES wird im Fall einer NULLABLE-Spalte verwendet und Sie möchten, dass der Standardwert anstelle von NULL verwendet wird. –

1

Als Alternative zu den aufgelisteten Antworten gibt es eine andere Syntax, die für einige Leute besser geeignet ist, zum Beispiel, wenn Sie Tools wie 'ReadyRoll' verwenden.

ALTER TABLE [dbo].[FOO] ADD BAR bit NOT NULL CONSTRAINT [df_Bar] DEFAULT 0 

Check out this SO answer, um zu sehen, warum Ihre Zwänge zu benennen (die df_Bar oben) ist schön.

Verwandte Themen