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

Kann ich eine Nicht-Null-Spalte ohne DEFAULT-Wert hinzufügen

Nein, das kannst du nicht.

Denn wenn Sie könnten, wüsste SQL nicht, was als Wert in die bereits vorhandenen Datensätze eingefügt werden soll. Wenn Sie keine Datensätze in der Tabelle hätten, würde es ohne Probleme funktionieren.

Der einfachste Weg, dies zu tun, besteht darin, die Spalte mit einem Standardwert zu erstellen und dann den Standardwert zu entfernen.

ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn

Eine andere Alternative wäre, die Spalte ohne Einschränkung hinzuzufügen, die Werte für alle Zellen zu füllen und die Einschränkung hinzuzufügen.