IDENTITY 列に値を指定して INSERT する

SQL Server Advent Calendar 13日目 です。

普段は必要無いですが、たまに IDENTITY 列に明示的に値を指定して INSERT したくなる時があります。
そんな時は、
SET IDENTITY_INSERT (Transact-SQL)
を使うことで、明示的に値を指定出来ます。

create table TestTable ( 
  id int identity(1, 1) not null primary key, 
  Name nvarchar(10) 
)

insert into TestTable ( Name ) values ( 'aaa' ) -- 成功
insert into TestTable ( Id, Name ) values ( 1000, 'bbb' ) -- 失敗
set identity_insert TestTable on
insert into TestTable ( Id, Name ) values ( 1000, 'bbb' ) -- 成功