适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric
中的仓库Microsoft Fabric中的SQL数据库
仅SELECT在带有INTO table子句的语句中,将IDENTITY身份列添加到新表中。 虽然相似,但该IDENTITY函数与你用来处理和CREATE TABLEALTER TABLE时的性质不同IDENTITY。
注意
要创建一个自动递增的数字,可以在多个表格中使用,或在应用程序中调用而无需引用任何表格,请参见 序列号。
语法
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中,你不能指定 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