1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[SQL SERVER + Laravel] IDENTIFY 設定したテーブルにIDを含むデータをInsertする

Last updated at Posted at 2021-04-29

SQL Server で Identify 設定がしてあるテーブルにIDを含むInsert文を発行したところ、下記のエラーが発生。

SQLSTATE[23000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]IDENTITY_INSERT が OFF に設定されているときは、テーブル 'tableName' の ID 列に明示的な値を挿入できません。

Identifyが設定してある場合は任意のIDで登録できないんですね。というわけで、SET IDENTITY_INSERT 文を発行して一時的に設定を解除したのちに登録することにしました。

ややこしい(?)ポイントとしては、ON で identify を無効化、 OFF で有効化です。

構文

SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }  

コードサンプル(Laravel)

プロジェクトがLaravelを使っていたので Laravel のコードになりますが、下記サンプルになります。

use DB;

$tableName = 'test_table';

// IDを任意の値で設定したいので Identify 設定を解除
DB::unprepared("SET IDENTITY_INSERT {$tableName} ON;");

// ここでInsert文を発行

// 設定を戻す
DB::unprepared("SET IDENTITY_INSERT {$tableName} ON;");
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?