Share via


column_definition (Transact-SQL)

Gibt die Eigenschaften einer Spalte an, die mithilfe von ALTER TABLE einer Tabelle hinzugefügt wird.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

column_name [ type_schema_name. ] type_name
    [ 
                ( { precision [ , scale ] | max | 
            [ { CONTENT | DOCUMENT } ] xml_schema_collection } ) 
    ] 
    [ FILESTREAM ]
    [ 
        [ CONSTRAINT constraint_name ] DEFAULT constant_expression 
             [ WITH VALUES ] 
        | IDENTITY [ (seed , increment ) ] [ NOT FOR REPLICATION ] 
    ] 
    [ ROWGUIDCOL ] 
    [ COLLATE < collation_name > ] 
    [ <column_constraint> [ ...n ] ] 

Argumente

  • column_name
    Der Name der Spalte, die geändert, hinzugefügt oder gelöscht werden soll. column_name kann zwischen 1 und 128 Zeichen enthalten. Bei neuen Spalten kann column_name für mit einem timestamp-Datentyp erstellte Spalten entfallen. Wenn column_name nicht für eine Spalte vom Typ timestamp angegeben ist, wird der Name timestamp verwendet.

  • [ type_schema_name**.** ] type_name
    Der Datentyp für die hinzugefügte Spalte und das Schema, zu dem er gehört.

    Mögliche Werte für type_name sind:

    • Ein Microsoft SQL Server-Systemdatentyp.

    • Ein Aliasdatentyp, der auf einem SQL Server-Systemdatentyp basiert. Aliasdatentypen müssen mithilfe von CREATE TYPE erstellt werden, damit sie in einer Tabellendefinition verwendet werden können.

    • Ein benutzerdefinierter Microsoft .NET Framework-Datentyp und das Schema, zu dem er gehört. Ein benutzerdefinierter .NET Framework-Datentyp muss mithilfe von CREATE TYPE erstellt werden, bevor er in einer Tabellendefinition verwendet werden kann.

    Wenn type_schema_name nicht angegeben ist, verweist Microsoft Database Engine (Datenbankmodul) auf type_name in der folgenden Reihenfolge:

    • SQL Server-Systemdatentyp.

    • Das Standardschema des aktuellen Benutzers in der aktuellen Datenbank.

    • Das dbo-Schema in der aktuellen Datenbank.

  • precision
    Die Genauigkeit für den angegebenen Datentyp. Weitere Informationen über gültige Genauigkeitswerte finden Sie unter Genauigkeit, Dezimalstellen und Länge.

  • scale
    Die Dezimalstellen für den angegebenen Datentyp. Weitere Informationen zu gültigen Dezimalstellenwerten finden Sie unter Genauigkeit, Dezimalstellen und Länge (Transact-SQL).

  • max
    Gilt nur für die Datentypen varchar, nvarchar und varbinary. Diese Datentypen werden zum Speichern von Zeichen- und Binärdaten mit einer Länge von 2^31 Byte und Unicode-Daten mit einer Länge von 2^30 Byte verwendet.

  • CONTENT
    Gibt an, dass jede Instanz des xml-Datentyps in column_name mehrere Elemente der obersten Ebene enthalten kann. CONTENT gilt nur für den xml-Datentyp und kann nur angegeben werden, wenn xml_schema_collection ebenfalls angegeben wird. Fehlt die Angabe, ist CONTENT das Standardverhalten.

  • DOCUMENT
    Gibt an, dass jede Instanz des xml-Datentyps in column_name nur ein Element der obersten Ebene enthalten kann. DOCUMENT gilt nur für den xml-Datentyp und kann nur angegeben werden, wenn xml_schema_collection ebenfalls angegeben wird.

  • xml_schema_collection
    Gilt nur für den xml-Datentyp zum Verknüpfen einer XML-Schemaauflistung mit dem Typ. Bevor eine xml-Spalte für ein Schema eingegeben werden kann, muss das Schema zunächst mithilfe von CREATE XML SCHEMA COLLECTION in der Datenbank erstellt werden.

  • FILESTREAM
    Gibt optional das FILESTREAM-Speicherattribut für eine Spalte an, die einen type_name mit dem Wert varbinary(max) hat.

    Wenn FILESTREAM für eine Spalte angegeben wird, muss die Tabelle auch eine Spalte mit dem Datentyp uniqueidentifier aufweisen, der das ROWGUIDCOL-Attribut enthält. Diese Spalte darf keine NULL-Werte zulassen und muss eine UNIQUE- oder eine PRIMARY KEY-Einschränkung für einzelne Spalten enthalten. Der GUID-Wert für die Spalte muss entweder durch eine Anwendung bereitgestellt werden, wenn Daten eingefügt werden, oder durch eine DEFAULT-Einschränkung, die die NEWID ()-Funktion verwendet.

    Die Spalte ROWGUIDCOL kann nicht gelöscht werden, und die zugehörigen Einschränkungen können nicht geändert werden, wenn für die Tabelle eine FILESTREAM-Spalte definiert ist. Die Spalte ROWGUIDCOL kann nur gelöscht werden, nachdem die letzte FILESTREAM-Spalte gelöscht wurde.

    Wenn das FILESTREAM-Speicherattribut für eine Spalte angegeben wird, werden alle Werte dieser Spalte in einem FILESTREAM-Datencontainer des Dateisystems gespeichert.

    Ein Beispiel, das die Verwendung von Spaltendefinitionen veranschaulicht, finden Sie unter Erste Schritte mit FILESTREAM-Speicherung.

  • [ CONSTRAINT constraint_name ]
    Gibt den Anfang einer DEFAULT-Definition an. Um die Kompatibilität mit früheren Versionen von SQL Server zu erhalten, kann einem Einschränkungsnamen ein DEFAULT-Wert zugewiesen werden. constraint_name muss den Regeln für Bezeichner entsprechen, wobei der Name außerdem nicht mit einem Nummernzeichen (#) beginnen darf. Wenn constraint_name nicht angegeben wird, wird der DEFAULT-Definition ein vom System generierter Name zugewiesen.

  • DEFAULT
    Ein Schlüsselwort, das den Standardwert für die Spalte angibt. DEFAULT-Definitionen können verwendet werden, um Werte für eine neue Spalte in den vorhandenen Datenzeilen bereitzustellen. DEFAULT-Definitionen können nicht auf timestamp-Spalten oder Spalten mit einer IDENTITY-Eigenschaft angewendet werden. Wenn ein Standardwert für eine benutzerdefinierte Spalte angegeben ist, sollte der Typ implizite Konvertierungen von constant_expression in den benutzerdefinierten Typ unterstützen.

  • constant_expression
    Ein Literalwert, ein NULL-Wert oder eine Systemfunktion, der bzw. die als Standardwert für die Spalte verwendet wird. Wenn constant_expression zusammen mit einer Spalte verwendet wird, die als benutzerdefinierter Datentyp von .NET Framework definiert ist, muss die Implementierung des Datentyps eine implizite Konvertierung des konstanten Ausdrucks in den benutzerdefinierten Datentyp unterstützen.

  • WITH VALUES
    Gibt an, dass der in DEFAULT constant_expression angegebene Wert in einer neuen, zu vorhandenen Zeilen hinzugefügten Spalte gespeichert wird. Wenn die hinzugefügte Spalte NULL-Werte zulässt und WITH VALUES angegeben ist, wird der Standardwert in der neuen, der vorhandenen Zeilen hinzugefügten Spalte gespeichert. Ist WITH VALUES für Spalten, die NULL-Werte zulassen, nicht angegeben, wird der Wert NULL in der neuen Spalte in vorhandenen Zeilen gespeichert. Wenn die neue Spalte keine NULL-Werte zulässt, wird der Standardwert in neuen Zeilen gespeichert, unabhängig davon, ob WITH VALUES angegeben ist.

  • IDENTITY
    Gibt an, dass es sich bei der neuen Spalte um eine Identitätsspalte handelt. Von SQL Server Database Engine (Datenbankmodul) wird ein eindeutiger, inkrementeller Wert für die Spalte bereitgestellt. Wenn Sie vorhandenen Tabellen Bezeichnerspalten hinzufügen, werden die ID-Nummern mit den Ausgangswerten und den inkrementellen Werten den vorhandenen Zeilen der Tabelle hinzugefügt. Die Reihenfolge, in der die Zeilen aktualisiert werden, ist nicht sichergestellt. Auch für alle neu hinzugefügten Zeilen werden ID-Nummern generiert.

    Identitätsspalten werden in der Regel in Verbindung mit PRIMARY KEY-Einschränkungen verwendet, um als eindeutiger Zeilenbezeichner für die Tabelle zu dienen. Die IDENTITY-Eigenschaft kann einer tinyint-, smallint-, int-, bigint-, decimal(p,0)- oder numeric(p,0)-Spalte zugewiesen werden. Es kann nur eine Identitätsspalte pro Tabelle erstellt werden. Das DEFAULT-Schlüsselwort und gebundene Standardwerte können bei einer Identitätsspalte nicht verwendet werden. Entweder müssen sowohl Ausgangswert als auch Inkrement oder keines von beiden angegeben werden. Wenn keine Angabe gemacht wird, ist der Standardwert (1,1). Es ist nicht möglich, einer vorhandenen Tabellenspalte die IDENTITY-Eigenschaft hinzuzufügen.

    HinweisHinweis

    Das Hinzufügen einer Identitätsspalte zu einer veröffentlichten Spalte wird nicht unterstützt, da dies beim Replizieren der Spalte auf den Abonnenten zu einer Nichtkonvergenz führen kann. Die Werte in der Identitätsspalte beim Verleger sind von der Reihenfolge abhängig, in der die Zeilen für die betroffene Tabelle physisch gespeichert sind. Die Zeilen sind auf dem Abonnenten möglicherweise anders gespeichert, sodass der Wert für die Identitätsspalte für dieselben Zeilen variieren kann.

    Verwenden Sie SET IDENTITY_INSERT, um die IDENTITY-Eigenschaft einer Spalte zu deaktivieren, indem das Einfügen expliziter Werte ermöglicht wird.

  • seed
    Der Wert, der für die erste in die Tabelle geladene Zeile verwendet wird.

  • increment
    Der Inkrementwert, der zum Identitätswert der zuvor geladenen Zeile addiert wird.

  • NOT FOR REPLICATION
    Kann für die IDENTITY-Eigenschaft angegeben werden. Wenn diese Klausel für die IDENTITY-Eigenschaft angegeben wird, werden Werte in Identitätsspalten nicht inkrementiert, wenn Replikations-Agents Einfügevorgänge ausführen. Weitere Informationen finden Sie unter Steuern von Einschränkungen, Identitäten und Triggern mithilfe von NOT FOR REPLICATION.

  • ROWGUIDCOL
    Gibt an, dass die Spalte eine Spalte mit für alle Zeilen global eindeutigen Bezeichnern ist. ROWGUIDCOL kann nur einer uniqueidentifier-Spalte zugewiesen werden, und nur eine uniqueidentifier-Spalte pro Tabelle kann als ROWGUIDCOL-Spalte gekennzeichnet werden. ROWGUIDCOL kann keinen Spalten des benutzerdefinierten Datentyps zugewiesen werden.

    ROWGUIDCOL erzwingt keine Eindeutigkeit der in der Spalte gespeicherten Werte. ROWGUIDCOL generiert auch nicht automatisch Werte für neue Zeilen, die in die Tabelle eingefügt werden. Verwenden Sie entweder die NEWID-Funktion in INSERT-Anweisungen, oder geben Sie die NEWID-Funktion als Standard für die Spalte an, um eindeutige Werte für jede Spalte zu generieren. Weitere Informationen finden Sie unter NEWID (Transact-SQL) und INSERT (Transact-SQL).

  • COLLATE < collation_name>
    Gibt die Sortierung der Spalte an. Wenn keine Sortierung angegeben ist, wird der Spalte die Standardsortierung der Datenbank zugewiesen. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden. Eine Liste und weitere Informationen finden Sie unter Name der Windows-Sortierreihenfolge (Transact-SQL) und SQL Server-Sortierungsname (Transact-SQL).

    Mit der COLLATE-Klausel können Sie nur die Sortierungen von Spalten der Datentypen char, varchar, nchar und nvarchar angeben.

    Weitere Informationen zur COLLATE-Klausel finden Sie unter COLLATE (Transact-SQL).

Hinweise

Wenn eine Spalte hinzugefügt wird, die über einen uniqueidentifier-Datentyp verfügt, kann sie mit einem Standardwert definiert werden, der die NEWID()-Funktion verwendet, um die eindeutigen Bezeichnerwerte in der neuen Spalte für jede vorhandene Zeile in der Tabelle anzugeben.

Database Engine (Datenbankmodul) erzwingt keine Reihenfolge für die Angabe von DEFAULT, IDENTITY, ROWGUIDCOL oder Spalteneinschränkungen in einer Spaltendefinition.

Beispiele

Beispiele finden Sie unter ALTER TABLE (Transact-SQL).