対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft FabricのWarehouse
Microsoft FabricにおけるSQLデータベース
IDENTITYはINTO table節付きのSELECT文でのみ使用し、新しいテーブルに単位列を追加してください。 似ていますが、IDENTITY関数はCREATE TABLEやALTER TABLEで使うようなIDENTITY性質とは異なります。
注意
複数のテーブルで使える自動増分番号を作成したり、テーブルを参照せずにアプリケーションから呼び出したりするには、 シーケンス番号を参照してください。
構文
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では、seedやincrementの値を指定できません。なぜなら、システムがこれらの値を自動的に管理して一意な整数を提供するからです。
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