wake-up-neo.com

Kann ich eine benannte Standardeinschränkung in einer Anweisung zum Hinzufügen von Spalten in SQL Server erstellen?

In SQL Server habe ich eine neue Spalte in einer Tabelle:

ALTER TABLE t_tableName 
    ADD newColumn NOT NULL

Dies schlägt fehl, da ich NOT NULL ohne Angabe einer Standardeinschränkung angebe. Die Tabelle sollte keine Standardeinschränkung haben.

Um dies zu umgehen, könnte ich die Tabelle mit der Standardeinschränkung erstellen und sie dann entfernen.

Es scheint jedoch keine Möglichkeit zu geben, anzugeben, dass die Standardeinschränkung als Teil dieser Anweisung benannt werden soll. Daher kann ich sie nur durch eine gespeicherte Prozedur entfernen, die sie in der Datei sys.default_constraints nachschlägt Tabelle.

Dies ist ein bisschen chaotisch/wortreich für eine Operation, die wahrscheinlich viel passieren wird. Hat jemand bessere Lösungen dafür?

132
GlennS

Das sollte funktionieren:

ALTER TABLE t_tableName 
    ADD newColumn VARCHAR(50)
    CONSTRAINT YourContraintName DEFAULT '' NOT NULL
192
Joe Stefanelli
ALTER TABLE t_tableName 
    ADD newColumn int NOT NULL
        CONSTRAINT DF_defaultvalue DEFAULT (1)
83
Mitch Wheat