it-swarm.com.de

Fügen Sie einer vorhandenen Tabelle in SQL Server eine Spalte mit einem Standardwert hinzu

Wie kann eine Spalte mit einem Standardwert zu einer vorhandenen Tabelle in SQL Server 2000 / SQL Server 2005 hinzugefügt werden?

2439
Mathias

Syntax:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Beispiel:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

Anmerkungen:

Optionaler Einschränkungsname:
Wenn Sie CONSTRAINT D_SomeTable_SomeCol weglassen, wird SQL Server automatisch generiert
eine Default-Contraint mit einem lustigen Namen wie: DF__SomeTa__SomeC__4FB7FEF6

Optionale With-Values-Anweisung:
Der WITH VALUES wird nur benötigt, wenn Ihre Spalte nullfähig ist
und Sie möchten, dass der Standardwert für vorhandene Datensätze verwendet wird.
Wenn Ihre Spalte NOT NULL ist, wird automatisch der Standardwert verwendet
für alle vorhandenen Datensätze, ob Sie WITH VALUES angeben oder nicht.

Wie Inserts mit einer Default-Einschränkung funktionieren:
Wenn Sie einen Datensatz in SomeTable einfügen undnotGeben Sie den Wert von SomeCol an, wird der Standardwert auf 0 gesetzt.
Wenn Sie einen Datensatzundeinfügen, geben Sie den Wert von SomeCol als NULL an (und Ihre Spalte lässt Nullen zu).
dann wird das Default-Constraintnotverwendet und NULL wird als Wert eingefügt.

Die Anmerkungen basierten auf dem großartigen Feedback aller.
Besonderer Dank an:
@Yatrix, @WalterStabosz, @YahooSerious und @StackMan für ihre Kommentare.

3111
James Boother
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

Durch die Einbeziehung vonDEFAULTwird die Spalte in exists rows mit dem Standardwert gefüllt, sodass die NOT NULL-Einschränkung nicht verletzt wird. 

903
dbugger

Beim Hinzufügen einer nullable-Spalte stellt WITH VALUES sicher, dass der bestimmte DEFAULT-Wert auf vorhandene Zeilen angewendet wird:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
207
phunk_munkie
ALTER TABLE <table name> 
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name> 
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO
122
ddc0660
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
111
Evan V

Passen Sie auf, wenn die hinzugefügte Spalte eine NOT NULL-Einschränkung hat, jedoch keine DEFAULT-Einschränkung (Wert). Die ALTER TABLE-Anweisung schlägt in diesem Fall fehl, wenn die Tabelle Zeilen enthält. Die Lösung besteht darin, entweder die NOT NULL-Einschränkung aus der neuen Spalte zu entfernen oder eine DEFAULT-Einschränkung dafür bereitzustellen.

89
jalbert

Die einfachste Version mit nur zwei Zeilen

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0
86
adeel41

Benutzen:

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

ALTER TABLE myTableName  
ADD RecordAddedDate smalldatetime NULL DEFAULT(GetDate())  
GO 
69
JerryOL

Wenn Sie mehrere Spalten hinzufügen möchten, können Sie dies beispielsweise tun

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

In SQL Server 2008-R2 wechsle ich in den Entwurfsmodus - in einer Testdatenbank - und füge meine beiden Spalten mit dem Designer hinzu und nehme die Einstellungen mit der GUI und dann mit der infamen vor Right-Click gibt die Option " Änderungsskript generieren "!

Bang up öffnet ein kleines Fenster mit dem korrekt formatierten, garantiert funktionierenden Änderungsskript. Drücken Sie die Easy-Taste.

48
Jack

Benutzen:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

Referenz: ALTER TABLE (Transact-SQL) (MSDN)

46
giá vàng

Sie können das mit T-SQL auf folgende Weise machen.

 ALTER TABLE {TABLENAME}
 ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
 CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

Sie können SQL Server Management Studio auch verwenden, indem Sie im Menü Entwurf mit der rechten Maustaste auf Tabelle klicken und den Standardwert auf Tabelle setzen.

Wenn Sie allen Tabellen in der Datenbank dieselbe Spalte hinzufügen (falls nicht vorhanden), verwenden Sie Folgendes:

 USE AdventureWorks;
 EXEC sp_msforeachtable
'PRINT ''ALTER TABLE ? ADD Date_Created DATETIME DEFAULT GETDATE();''' ;
43
gngolakia

Alternativ können Sie einen Standard hinzufügen, ohne die Einschränkung explizit benennen zu müssen:

ALTER TABLE [schema].[tablename] ADD  DEFAULT ((0)) FOR [columnname]

Wenn beim Erstellen dieser Einschränkung Probleme mit vorhandenen Standardeinschränkungen auftreten, können diese entfernt werden durch

alter table [schema].[tablename] drop constraint [constraintname]
41
Christo

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

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

Mit einer anderen Möglichkeit können Sie einer vorhandenen Datenbanktabelle eine Spalte mit einem Standardwert hinzufügen.

Im Folgenden wird ein viel gründlicheres SQL-Skript zum Hinzufügen einer Spalte mit einem Standardwert beschrieben, einschließlich der Überprüfung, ob die Spalte vorhanden ist, bevor sie hinzugefügt wird. Außerdem wird die Einschränkung eingeblendet und bei Bedarf gelöscht. Dieses Skript benennt auch die Einschränkung, sodass wir eine Nice-Namenskonvention haben können (ich mag DF_). Wenn nicht, gibt uns SQL eine Einschränkung mit einem Namen, der eine zufällig generierte Nummer hat. Daher 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

Auf zwei Arten können Sie einer vorhandenen Datenbanktabelle eine Spalte mit einem Standardwert hinzufügen.

40
Catto
ALTER TABLE ADD ColumnName {Column_Type} Constraint

Der MSDN-Artikel ALTER TABLE (Transact-SQL) enthält alle Syntax der alter-Tabelle.

34
Benjamin Autin

Dies kann auch in der SSMS-Benutzeroberfläche erfolgen. Ich zeige unten ein Standarddatum, aber der Standardwert kann natürlich beliebig sein.

  1. Platzieren Sie Ihre Tabelle in der Entwurfsansicht (Klicken Sie mit der rechten Maustaste auf die Tabelle in object Explorer-> Design).
  2. Fügen Sie der Tabelle eine Spalte hinzu (oder klicken Sie auf die zu aktualisierende Spalte, wennit bereits vorhanden ist).
  3. Geben Sie in den Spalteneigenschaften unten (getdate()) oder abc oder 0 oder einen beliebigen Wert ein, den Sie in das Feld Default Value oder Binding wie unten gezeigt eingeben möchten:

 enter image description here

29
Tony L.

Beispiel:

ALTER TABLE [Employees] ADD Seniority int not null default 0 GO
27
andy

Beispiel:

ALTER TABLE tes 
ADD ssd  NUMBER   DEFAULT '0';
21
Mohit Tamrakar

Erstelle zuerst eine Tabelle mit dem Namen student:

CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)

Fügen Sie eine Spalte hinzu:

ALTER TABLE STUDENT 
ADD STUDENT_NAME INT NOT NULL DEFAULT(0)

SELECT * 
FROM STUDENT

Die Tabelle wird erstellt und eine Spalte wird mit einem Standardwert zu einer vorhandenen Tabelle hinzugefügt.

 Image 1

17
Laxmi

SQL Server + Alterstabelle + Spalte hinzufügen + Standardwert uniqueidentifier 

ALTER TABLE Product 
ADD ReferenceID uniqueidentifier not null 
default (cast(cast(0 as binary) as uniqueidentifier))
16
Naveen Desosha

Versuche dies

ALTER TABLE Product
ADD ProductID INT NOT NULL DEFAULT(1)
GO
15
Jakir Hossain
IF NOT EXISTS (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME ='TABLENAME' AND COLUMN_NAME = 'COLUMNNAME'
)
BEGIN
    ALTER TABLE TABLENAME ADD COLUMNNAME Nvarchar(MAX) Not Null default
END
14
Jeevan Gharti

Das hat viele Antworten, aber ich habe das Bedürfnis, diese erweiterte Methode hinzuzufügen. Dies scheint viel länger zu sein, aber es ist äußerst nützlich, wenn Sie einer Tabelle mit Millionen Zeilen in einer aktiven Datenbank ein NOT NULL-Feld hinzufügen.

ALTER TABLE {schemaName}.{tableName}
    ADD {columnName} {datatype} NULL
    CONSTRAINT {constraintName} DEFAULT {DefaultValue}

UPDATE {schemaName}.{tableName}
    SET {columnName} = {DefaultValue}
    WHERE {columName} IS NULL

ALTER TABLE {schemaName}.{tableName}
    ALTER COLUMN {columnName} {datatype} NOT NULL

Dazu wird die Spalte als nullwertfähiges Feld hinzugefügt. Mit dem Standardwert werden alle Felder auf den Standardwert aktualisiert (oder Sie können aussagekräftigere Werte zuweisen). Schließlich wird die Spalte in NOT NULL geändert.

Der Grund dafür ist, wenn Sie eine Tabelle mit großem Maßstab aktualisieren und ein neues Nicht-Null-Feld hinzufügen, das in jede einzelne Zeile geschrieben werden muss. Dadurch wird die gesamte Tabelle gesperrt, während sie die Spalte hinzufügt und dann alle Werte schreibt.

Diese Methode fügt die nullfähige Spalte hinzu, die von selbst viel schneller arbeitet, und füllt dann die Daten, bevor der Nicht-Null-Status festgelegt wird.

Ich habe festgestellt, dass das Durchführen der gesamten Sache in einer Anweisung einen unserer aktiveren Tische für 4-8 Minuten aussperrt, und oft habe ich den Prozess abgebrochen. Diese Methode dauert in der Regel nur wenige Sekunden und führt zu einer minimalen Blockierung.

Wenn Sie eine Tabelle im Bereich von Milliarden von Zeilen haben, lohnt es sich möglicherweise, die Aktualisierung wie folgt zu stapeln:

WHILE 1=1
BEGIN
    UPDATE TOP (1000000) {schemaName}.{tableName}
        SET {columnName} = {DefaultValue}
        WHERE {columName} IS NULL

    IF @@ROWCOUNT < 1000000
        BREAK;
END
13
Ste Bov
--Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO
12
wild coder

Fügen Sie einer Tabelle eine neue Spalte hinzu:

ALTER TABLE [table]
ADD Column1 Datatype

Zum Beispiel,

ALTER TABLE [test]
ADD ID Int

Wenn der Benutzer es automatisch erhöhen möchte, gilt Folgendes:

ALTER TABLE [test]
ADD ID Int IDENTITY(1,1) NOT NULL
10
Chirag Thakar

Dies kann durch den folgenden Code erfolgen.

CREATE TABLE TestTable
    (FirstCol INT NOT NULL)
    GO
    ------------------------------
    -- Option 1
    ------------------------------
    -- Adding New Column
    ALTER TABLE TestTable
    ADD SecondCol INT
    GO
    -- Updating it with Default
    UPDATE TestTable
    SET SecondCol = 0
    GO
    -- Alter
    ALTER TABLE TestTable
    ALTER COLUMN SecondCol INT NOT NULL
    GO
9
Mohit Dagar

Nun, ich habe jetzt einige Änderungen an meiner vorherigen Antwort vorgenommen. Ich habe festgestellt, dass keine der Antworten IF NOT EXISTS erwähnt wurde. Ich werde also eine neue Lösung anbieten, da ich einige Probleme hatte, die Tabelle zu verändern.

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
BEGIN
ALTER TABLE dbo.TaskSheet ADD
 IsBilledToClient bit NOT NULL DEFAULT ((1))
END
GO

Hierbei ist TaskSheet der bestimmte Tabellenname und IsBilledToClient die neue Spalte, die Sie einfügen möchten, und 1 der Standardwert. Das heißt in der neuen Spalte, was der Wert der vorhandenen Zeilen sein wird, also wird automatisch eine gesetzt. Sie können jedoch in Bezug auf den Spaltentyp, den ich verwendet habe, BIT beliebig ändern, so dass ich den Standardwert 1 eingebe.

Ich schlage das obige System vor, weil ich ein Problem hatte. Was ist also das Problem? Das Problem ist, wenn die Spalte IsBilledToClient in der Tabelle tabelle vorhanden ist. Wenn Sie nur den unten angegebenen Code ausführen, wird im SQL Server Query Builder ein Fehler angezeigt. Wenn es aber nicht existiert, wird es beim ersten Mal zum ersten Mal keinen Fehler geben.

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]
8
gdmanandamohon
ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)

Aus dieser Abfrage können Sie eine Spalte mit Datentyp Integer mit dem Standardwert 0 hinzufügen.

8
Sandeep Kumar

Wenn der Standardwert Null ist, gilt Folgendes:

  1. Öffnen Sie in SQL Server die Baumstruktur der Zieltabelle
  2. Klicken Sie mit der rechten Maustaste auf "Spalten" ==> New Column
  3. Geben Sie die Spalte Name, Select Type ein und aktivieren Sie das Kontrollkästchen Nullen zulassen
  4. Klicken Sie in der Menüleiste auf Save.

Erledigt!

7
usefulBee

Sie können diese Abfrage verwenden:

ALTER TABLE tableName ADD ColumnName datatype DEFAULT DefaultValue;
6
Arun D

SQL Server + Alterstabelle + Spalte hinzufügen + Standardwert uniqueidentifier ...

ALTER TABLE [TABLENAME] ADD MyNewColumn INT not null default 0 GO
6
Chanukya

Klicken Sie mit der rechten Maustaste auf die Tabelle, klicken Sie unter den letzten Spaltennamen und geben Sie die Spalteninformationen ein.

Fügen Sie dann einen Standardwert oder eine Bindung hinzu, etwa '1' für string oder 1 für int.

5

Dies ist für SQL Server:

ALTER TABLE TableName
ADD ColumnName (type) -- NULL OR NOT NULL
DEFAULT (default value)
WITH VALUES

Beispiel:

ALTER TABLE Activities
ADD status int NOT NULL DEFAULT (0)
WITH VALUES

Wenn Sie Einschränkungen hinzufügen möchten, gilt Folgendes:

ALTER TABLE Table_1
ADD row3 int NOT NULL
CONSTRAINT CONSTRAINT_NAME DEFAULT (0)
WITH VALUES
4
Akhil Singh

schritt 1. Zuerst müssen Sie die Tabelle ändern, indem Sie ein Feld hinzufügen

alter table table_name add field field_name data_type

schritt-2 ERSTELLEN DEFAULT

USE data_base_name;
GO
CREATE DEFAULT default_name AS 'default_value';

schritt-3 Dann müssen Sie dieses Verfahren ausführen

exec sp_bindefault 'default_name' , 'schema_name.table_name.field_name'

beispiel - 

USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';
4
raju chowrsiya
--Adding New Column with Default Value
ALTER TABLE TABLENAME 
ADD COLUMNNAME DATATYPE NULL|NOT NULL DEFAULT (DEFAULT_VALUE)

OR

--Adding CONSTRAINT And Set Default Value on Column
ALTER TABLE TABLENAME ADD  CONSTRAINT [CONSTRAINT_Name]  DEFAULT 
(DEFAULT_VALUE) FOR [COLUMNNAME]
3
Erfan Mohammadi
ALTER TABLE Table1 ADD Col3 INT NOT NULL DEFAULT(0)
3

Versuchen Sie es mit der folgenden Abfrage:

ALTER TABLE MyTable
ADD MyNewColumn DataType DEFAULT DefaultValue

Dadurch wird der Tabelle eine neue Spalte hinzugefügt.

1
Anshul Dubey