IDENTITY (Funktion) (Transact-SQL)

Wird nur in einer SELECT-Anweisung mit einer INTO table-Klausel verwendet, um eine Identitätsspalte in eine neue Tabelle einzufügen. Die IDENTITY-Funktion ähnelt der mit CREATE TABLE und ALTER TABLE verwendeten IDENTITY-Eigenschaft, ist jedoch nicht mit ihr identisch.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

IDENTITY (data_type [ , seed , increment ] ) AS column_name

Argumente

  • data_type
    Der Datentyp der Identitätsspalte. Gültige Datentypen für eine Identitätsspalte sind beliebige Datentypen aus der ganzzahligen Datentypkategorie (mit Ausnahme des bit-Datentyps) oder der decimal-Datentyp.

  • seed
    Der Wert für ganze Zahlen, der der ersten Zeile in der Tabelle zugewiesen werden soll. Jeder nachfolgenden Zeile wird jeweils der nächste Identitätswert zugewiesen, der sich aus dem letzten IDENTITY-Wert plus dem increment-Wert ergibt. Ist weder der Ausgangswert (seed) noch der inkrementelle Wert (increment ) angegeben, gilt für beide der Standardwert 1.

  • increment
    Der ganzzahlige Wert, der dem seed-Wert nachfolgende Zeilen in der Tabelle hinzugefügt werden soll.

  • column_name
    Der Name der Spalte, die in die neue Tabelle eingefügt werden soll.

Rückgabetypen

Gibt denselben Wert zurück wie data_type*.*

Hinweise

Da diese Funktion eine Spalte in einer Tabelle erstellt, muss für die Spalte ein Name in der Auswahlliste angegeben werden. Dies kann auf zwei Arten geschehen:

--(1)
SELECT IDENTITY(int, 1,1) AS ID_Num
INTO NewTable
FROM OldTable;

--(2)
SELECT ID_Num = IDENTITY(int, 1, 1)
INTO NewTable
FROM OldTable;

Beispiele

Im folgenden Beispiel werden alle Zeilen aus der Contact-Tabelle der AdventureWorks-Datenbank in eine neue Tabelle namens NewContact eingefügt. Die IDENTITY-Funktion bewirkt, dass die Identifikationsnummern in der NewContact-Tabelle bei 100 anstatt bei 1 beginnen.

USE AdventureWorks;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
    DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks SET RECOVERY BULK_LOGGED;
GO
SELECT  IDENTITY(smallint, 100, 1) AS ContactNum,
        FirstName AS First,
        LastName AS Last
INTO Person.NewContact
FROM Person.Contact;
GO
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO