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;");