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.
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 Person-Tabelle der AdventureWorks2008R2-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 AdventureWorks2008R2;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY BULK_LOGGED;
GO
SELECT IDENTITY(smallint, 100, 1) AS ContactNum,
FirstName AS First,
LastName AS Last
INTO Person.NewContact
FROM Person.Person;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO