IDENTITY (功能)(Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsMicrosoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

SELECT在帶有INTO table子句的語句中,將IDENTITY身份欄位加入新資料表。 雖然相似,但函IDENTITY數與你使用且 CREATE TABLEALTER TABLE的性質不同IDENTITY

注意

若要建立一個自動遞增的數字,可以在多個資料表中使用,或在應用程式中呼叫而無需參考任何資料表,請參見 序號

Transact-SQL 語法慣例

語法

Syntax for SQL Server, Azure SQL Database, Azure SQL 受控執行個體, SQL database in Fabric:

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

Fabric 資料倉儲的語法:

IDENTITY ( data_type ) AS column_name  

引數

data_type

身份欄位的資料型態。 身份欄位的有效資料型態是指整 資料類型中的任何資料型態,唯獨位 元資料型 別或 十進位 資料型別除外。

種子

將整數值指派給表格的第一列。 每一列後續的單位值,也就是最後 IDENTITY 一個值加上 遞增 值。 如果你沒指定 種子量,兩者都預設為 1。

增加

整數值,為表格中連續列的 種子 值加到。

column_name

要插入新資料表的欄位名稱。

傳回類型

傳回與 data_type 相同的值。

備註

由於此函式會在資料表中建立欄位,您必須以以下方式之一指定該欄位名稱:

--(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;  

Microsoft Fabric Data Warehouse中的支援

在Fabric Data Warehouse中,你無法指定 seed 或 值increment,因為系統會自動管理這些值,提供唯一的整數。 對於陳述句中的 CREATE TABLE 欄位定義,你只需使用 BIGINT IDENTITY。 欲了解更多資訊,請參見CREATE TABLE(Transact-SQL)( IDENTITY 財產)IDENTITYFabric Data Warehouse。

範例

以下範例將 AdventureWorks2025 資料庫中該資料表的所有資料列 Contact 插入一個名為 NewContact的新資料表中。 該 IDENTITY 函數將識別號碼設定為表中的 100 而非 1 NewContact

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