INSERT文でIDENTITYが指定されている列に明示的な値を挿入する方法

本投稿のSQL Serverのバージョンは「2017 Developer Edition」です。SQL Server Management Studioのバージョンは「17.3」です。

IDENTITYが指定されている列に明示的な値を挿入する方法です。
テーブル定義はこんな感じです。

CREATE TABLE [dbo].[Table_1](
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [Column1] [char](10) NULL,
 [Column2] [char](10) NULL
) ON [PRIMARY]

上記のテーブルの[ID]列に対して、INSERT文で明示的に値を指定すると以下の様なエラーになります。

f:id:masaru1006a:20180401025016j:plain

これを、回避するには、「SET IDENTITY_INSERT [データベース名].[スキーマ名].[テーブル名] ON」を実行して、「IDENTITY_INSERT」を有効にします。
すると、以下の様にエラーが起きなくなります。

f:id:masaru1006a:20180401025944j:plain

設定を戻すには、「SET IDENTITY_INSERT [データベース名].[スキーマ名].[テーブル名] OFF」を実行して、「IDENTITY_INSERT」を無効にします。

f:id:masaru1006a:20180401030341j:plain

元に戻すと、また、エラーが起きるようになります。