IDENTITY (関数) (Transact-SQL)

INTO table 句と共に SELECT ステートメントでのみ使用し、新しいテーブルに ID 列を追加します。IDENTITY 関数は、CREATE TABLE と ALTER TABLE で使用される IDENTITY プロパティと似ていますが、同じものではありません。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

  • data_type
    ID 列のデータ型を指定します。ID 列に対して有効なデータ型は、整数型に分類されるデータ型 (bit 型を除く)、または decimal 型です。

  • seed
    テーブル内の先頭行に割り当てる整数値を指定します。それ以降の各行には、前の IDENTITY 値に increment 値を加えた次の ID 値が割り当てられます。seed と increment のいずれも指定しなかった場合は、両方とも既定値 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;

次の例では、AdventureWorks2008R2 データベースの Person テーブルにあるすべての行を、NewContact という新しいテーブルに追加します。IDENTITY 関数を使用して、NewContact テーブルの識別番号を 1 ではなく 100 から開始するようにします。

USE AdventureWorks2008R2;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
    DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks2008R2 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 AdventureWorks2008R2 SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO