IDENTITY (功能)(Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure 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 数据库, Azure SQL 托管实例, SQL database in Fabric:

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

Fabric数据仓库语法:

IDENTITY ( data_type ) AS column_name  

参数

data_type

身份列的数据类型。 单位列的有效数据类型是整 数据类型类别中的任何数据类型,除了 比特 数据类型或 十进制 数据类型。

seed

将整数值分配给表中第一行。 每一行都得到下一个单位值,即最后 IDENTITY 一个值加上 递增 值。 如果你没有指定 种子量,两者默认都是1。

increment

整数值,用于为表中连续行的 种子 值加到。

column_name

要插入到新表格中的列名。

返回类型

返回与 data_type 相同的数据类型

注解

由于该函数在表中创建列,您必须通过以下方式之一为select列表中的列指定名称:

--(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中,你不能指定 seedincrement 值,因为系统会自动管理这些值,提供唯一的整数。 对于语句中的 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