IDENTITY (機能)(Transact-SQL)

対象者:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft FabricのWarehouseMicrosoft FabricにおけるSQLデータベース

IDENTITYINTO table節付きのSELECT文でのみ使用し、新しいテーブルに単位列を追加してください。 似ていますが、IDENTITY関数はCREATE TABLEALTER TABLEで使うようなIDENTITY性質とは異なります。

注意

複数のテーブルで使える自動増分番号を作成したり、テーブルを参照せずにアプリケーションから呼び出したりするには、 シーケンス番号を参照してください。

Transact-SQL 構文表記規則

構文

Syntax for SQL Server、Azure SQL Database、Azure SQL Managed Instance、SQL database in Fabric:

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

Fabric Data Warehouseの構文:

IDENTITY ( data_type ) AS column_name  

引数

data_type

識別列のデータ型。 単位列の有効なデータ型は、ビットデータ型または十進データ型を除く整データ型カテゴリのすべてのデータ型です。

テーブルの最初の行に割り当てる整数値。 その後の各行は次の恒等性値、すなわち最後の IDENTITY 値と インクリメント 値を加えた値を受け取ります。 シードインクリメントを指定しなければ、どちらもデフォルトで1になります。

インクリメント

テーブル内の連続する行の シード 値に整数を加えるための整数値。

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(プロパティ)、およびFabric Data WarehouseのIDENTITYをご覧ください。

以下の例では、AdventureWorks2025データベースの Contact テーブルのすべての行を新しいテーブル NewContactに挿入します。 IDENTITY関数は識別番号をNewContact表の1から100から始まるように設定します。

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