[DB]Azure SQL Database(SQL Server)でSET IDENTITY_INSERTエラー

SQLServer

SET IDENTITY_INSERTを使ったときに、Azure SQL Database(SQL Server)でエラーが発生しました😇
短いですがIDENTITY_INSERTとエラーの解消法について書いてます。

そもそもIDENTITYとは?

IDENTITYをカラムに設定しておくと、
自動採番してくれるというもので、MySqlでいうauto incrimentですね。

SET IDENTITY_INSERT ‘テーブル名’ [ON|OFF]

IDENTITYなカラムにデータを明示的に入れたい場合は下記のようにテーブル名を指定してONにする。

SET IDENTITY_INSERT 'テーブル名' ON

逆に入れれないように無効にするには

SET IDENTITY_INSERT 'テーブル名' OFF

エラー内容

エラーの内容はこちら。
1つ目のテーブルにSET IDENTITY_INSERTをして、
2つ目のテーブルに同じようにやったらエラーになるというもの。

IDENTITY_INSERT is already ON for table '1つ目のテーブル名'. Cannot perform SET operation for table '2つ目のテーブル名'.

今回ユニットテストを書いていて、
SET IDENTITY_INSERTを複数回ONにしようとしてエラーになりました。。

解決方法

stackoverflowを見て解決!
相変わらずgoogle翻訳に頼っていますが😞

どうやら、いくつも同時にONにすることができないらしいです。
なので、ONにしてインサートしてOFFにして次のテーブルという風に繰り返さないといけないようでした。

Confusing IDENTITY_INSERT error, says it is already on in another table
I'm trying to rebuild a database from a text file, using VBA. To insert the ID values, I call this before sending in the...

コメント

タイトルとURLをコピーしました