IDENTITY 列に明示的に値を設定してレコードを挿入する

このページのタグ:[SQL Server]
SQL ServerでIDENTITYに指定された列に明示的に値を設定してレコードを挿入する手順を紹介します。

概要

IDENTITYに指定された列に明示的に値を設定してレコードを挿入する場合は、 SET IDENTITY_INSERT を利用します。

書式

SET IDENTITY_INSERT (テーブル名) (value)

valueの値は以下となります。
意味
ON明示的に値を指定した挿入を有効にします
OFF明示的に値を指定した挿入を無効にします

明示的に値を指定した挿入を有効にする場合

SET IDENTITY_INSERT Contents ON
明示的に値を指定した挿入を無効にする場合

SET IDENTITY_INSERT Contents OFF


SET IDENTITY_INSERT を利用して ON にした場合は、利用後には OFFに戻しておきます。

手順

下記のSQLを実行しテーブルを作成します。id列は IDENTITY に設定されており、自動でid番号が採番される列です。

CREATE TABLE [dbo].[Products](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [nchar](128) NULL,
	[price] [decimal](18, 0) NULL,
	[category] [nchar](10) NULL,
)

失敗する例

下記のSQLを実行すると、
IDENTITY_INSERT が OFF に設定されているときは、テーブル 'Products' の ID 列に明示的な値を挿入できません。
のエラーメッセージが表示されます。

insert into Products (id, name, price, category) values (3,'penguin', 2400, 'bird')

挿入できる例


SET IDENTITY_INSERT Products ON
insert into Products (id, name, price, category) values (3,'penguin', 2400, 'bird')
SET IDENTITY_INSERT Products OFF


IDENTITYに指定された列idの値に、指定した値でレコードが追加できています。


プライバシー    iPentecについて
iPentec all rights reserverd. (ISDC)