IDENTITY (関数) (Transact-SQL)
INTO table 句と共に SELECT ステートメントでのみ使用し、新しいテーブルに ID 列を追加します。IDENTITY 関数は、CREATE TABLE と ALTER TABLE で使用される IDENTITY プロパティと似ていますが、同じものではありません。
構文
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;
例
次の例では、AdventureWorks データベースの Contact テーブルにあるすべての行を、NewContact という新しいテーブルに追加します。IDENTITY 関数を使用して、NewContact テーブルの識別番号を 1 ではなく 100 から開始するようにします。
USE AdventureWorks;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks SET RECOVERY BULK_LOGGED;
GO
SELECT IDENTITY(smallint, 100, 1) AS ContactNum,
FirstName AS First,
LastName AS Last
INTO Person.NewContact
FROM Person.Contact;
GO
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO