2010-09-22 6 views
96

In SQL Server, ich habe eine neue Spalte auf einem Tisch:Kann ich eine benannte Standardeinschränkung in einer add column -Anweisung in SQL Server erstellen?

ALTER TABLE t_tableName 
    ADD newColumn NOT NULL 

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

Um dies zu umgehen, konnte ich die Tabelle mit der Standardbedingung erstellen und dann entfernen.

Es scheint jedoch keine Möglichkeit zu geben, anzugeben, dass die Standardbedingung als Teil dieser Anweisung benannt werden soll. Daher besteht meine einzige Möglichkeit, sie loszuwerden, darin, eine gespeicherte Prozedur zu haben, in der sie nachgeschlagen wird die Tabelle sys.default_constraints.

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

Antwort

149

sollte diese Arbeit:

ALTER TABLE t_tableName 
    ADD newColumn VARCHAR(50) 
    CONSTRAINT YourContraintName DEFAULT '' NOT NULL 
+0

Arbeiten auch im Jahr 2012. Gory-Details: http://msdn.microsoft.com/en-us/library/ms187742.aspx – adam77

1

Ich könnte die Spalte ohne NOT NULL erstellen, führen Sie ein Update für das vorhandene Datum, dann ändern Sie die Spalte, um die NOT NULL zu haben. Ich mache mir Sorgen über die Auswirkungen auf die Leistung, zum Beispiel, wenn es sich um einen Multi-Millionen-Reigen-Tisch handelt, so scheint dies weniger als ideal.

53
ALTER TABLE t_tableName 
    ADD newColumn int NOT NULL 
     CONSTRAINT DF_defaultvalue DEFAULT (1) 
+12

Ich ziehe das der akzeptierten Antwort vor, da ich die Standardbeschränkung fallen lassen kann, ohne mich darum sorgen zu müssen, die NOT NULL-Einschränkung zu verlieren. – EleventhDoctor

+4

@Elentdoctor Das ergibt keinen Sinn. Das NOT NULL ist kein Teil der Einschränkung und die Anweisung drop verweist nur auf den Namen der Einschränkung. –

+4

@RogerWillcocks Sie haben Recht, aber beim Lesen wird klarer, dass NOT NULL von der Einschränkung getrennt ist. – deluxxxe

Verwandte Themen