3261 Stimmen

Hinzufügen einer Spalte mit einem Standardwert zu einer vorhandenen Tabelle in SQL Server

Wie kann ich eine Spalte mit einem Standardwert zu einer bestehenden Tabelle in SQL-Server 2000 / SQL Server 2005 ?

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 .....

125voto

adeel41 Punkte 2935

Die einfachste Version mit nur zwei Zeilen

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

109voto

jalbert Punkte 2997

Seien Sie vorsichtig, wenn die Spalte, die Sie hinzufügen, ein NOT NULL Einschränkung, hat aber keine DEFAULT Einschränkung (Wert). Die ALTER TABLE Anweisung wird in diesem Fall fehlschlagen, wenn die Tabelle Zeilen enthält. Die Lösung ist, entweder die NOT NULL Einschränkung der neuen Spalte oder eine DEFAULT Einschränkung für sie.

104voto

JerryOL Punkte 1349

Verwendung:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())  
GO

97voto

Gabriel L. Punkte 4178

Wenn Sie mehrere Spalten hinzufügen möchten, können Sie dies zum Beispiel so tun:

ALTER TABLE YourTable
    ADD Column1 INT NOT NULL DEFAULT 0,
        Column2 INT NOT NULL DEFAULT 1,
        Column3 VARCHAR(50) DEFAULT 'Hello'
GO

65voto

Catto Punkte 5991

Um einer bestehenden Datenbanktabelle eine Spalte mit einem Standardwert hinzuzufügen, können wir verwenden:

ALTER TABLE [dbo.table_name]
    ADD [Column_Name] BIT NOT NULL
Default ( 0 )

Hier ist eine weitere Möglichkeit, einer bestehenden Datenbanktabelle eine Spalte mit einem Standardwert hinzuzufügen.

Nachfolgend finden Sie ein sehr viel gründlicheres SQL-Skript zum Hinzufügen einer Spalte mit einem Standardwert, in dem auch geprüft wird, ob die Spalte vorhanden ist, bevor sie hinzugefügt wird, und in dem auch die Einschränkung überprüft und gegebenenfalls gelöscht wird. Dieses Skript benennt auch die Einschränkung, so dass wir eine schöne Namenskonvention haben können (ich mag DF_) und wenn nicht, gibt uns SQL eine Einschränkung mit einem Namen, der eine zufällig generierte Zahl hat; so ist es schön, die Einschränkung auch benennen zu können.

-------------------------------------------------------------------------
-- Drop COLUMN
-- Name of Column: Column_EmployeeName
-- Name of Table: table_Emplyee
--------------------------------------------------------------------------
IF EXISTS (
            SELECT 1
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_NAME = 'table_Emplyee'
              AND COLUMN_NAME = 'Column_EmployeeName'
           )
    BEGIN

        IF EXISTS ( SELECT 1
                    FROM sys.default_constraints
                    WHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]')
                      AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]')
                  )
            BEGIN
                ------  DROP Contraint

                ALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]
            PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped'
            END
     --    -----   DROP Column   -----------------------------------------------------------------
        ALTER TABLE [dbo].table_Emplyee
            DROP COLUMN Column_EmployeeName
        PRINT 'Column Column_EmployeeName in images table was dropped'
    END

--------------------------------------------------------------------------
-- ADD  COLUMN Column_EmployeeName IN table_Emplyee table
--------------------------------------------------------------------------
IF NOT EXISTS (
                SELECT 1
                FROM INFORMATION_SCHEMA.COLUMNS
                WHERE TABLE_NAME = 'table_Emplyee'
                  AND COLUMN_NAME = 'Column_EmployeeName'
               )
    BEGIN
    ----- ADD Column & Contraint
        ALTER TABLE dbo.table_Emplyee
            ADD Column_EmployeeName BIT   NOT NULL
            CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]  DEFAULT (0)
        PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added'
        PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added'
     END

GO

Dies sind zwei Möglichkeiten, einer bestehenden Datenbanktabelle eine Spalte mit einem Standardwert hinzuzufügen.

CodeJaeger.com

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.

Powered by:

X