Freigeben über


IDENTITY (Funktion) (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

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.

Hinweis

Weitere Informationen zu einer automatisch inkrementierten Zahl, die in mehreren Tabellen verwendet oder aus Anwendungen aufgerufen werden kann, ohne dass auf eine Tabelle verwiesen wird, finden Sie unter Sequenznummern.

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 Integerdatentypkategorie (mit Ausnahme des bit-Datentyps) oder der decimal-Datentyp.

seed
Der ganzzahlige Wert, 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 für 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 Tabelle Contact der AdventureWorks2022-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 AdventureWorks2022;  
GO  
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL  
    DROP TABLE Person.NewContact;  
GO  
ALTER DATABASE AdventureWorks2022 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 AdventureWorks2022 SET RECOVERY FULL;  
GO  
SELECT ContactNum, First, Last FROM Person.NewContact;  
GO  

Weitere Informationen

CREATE TABLE (Transact-SQL)
@@IDENTITY (Transact-SQL)
IDENTITY (Eigenschaft) (Transact-SQL)
SELECT @local_variable (Transact-SQL)
DBCC CHECKIDENT (Transact-SQL)
sys.identity_columns (Transact-SQL)