IDENTITY (関数) (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

INTO を伴う SELECT ステートメントでのみ使用 テーブル 句を新しいテーブルに id 列を挿入します。 似ていますが、IDENTITY 関数は CREATE TABLE と ALTER TABLE で使用される IDENTITY プロパティではありません。

注意

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

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

data_type
ID 列のデータ型を指定します。 Id 列の有効なデータ型は、整数データ型に分類される任意のデータ型を除く、bit データ型、または decimal データ型。

seed
テーブル内の先頭行に割り当てる整数値を指定します。 以降の各行は次の id の値は最後の ID 値が割り当てられていると インクリメント 値。 どちらの場合 シードインクリメント を指定すると、どちらも、既定を 1 にします。

increment
テーブル内の連続する行に対して、seed の値に加える整数値です。

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;  

次の例では、AdventureWorks2022 データベースの 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  

参照

CREATE TABLE (Transact-SQL)
@@IDENTITY (Transact-SQL)
IDENTITY (プロパティ) (Transact-SQL)
SELECT @local_variable (Transact-SQL)
DBCC CHECKIDENT (Transact-SQL)
sys.identity_columns (Transact-SQL)