【SQLServer】エラー「identity insertがOFFに設定されているときは、テーブルのID列を明示的な値を挿入できません」が出たときの対処法

SQLServerを使っていて、以下のようなエラーが発生しかした。

identity insertがOFFに設定されているときは、テーブルのID列を明示的な値を挿入できません

今回は上記のエラーメッセージが出た時の対処法をまとめたので、ここにメモしておきます。

[indentityの詳細]

【SQLServer】自動発番(identity)の使い方

 

原因

上記のエラーの原因は、自動発番のidentityプロパティを設定しているカラムに対して、INSERTやUPDATEする際にカラムを指定した時に発生します

自動発番を設定したカラムはいじることができない制約があるためです。

どうしてもidentityプロパティのカラムについて変更を行いたい場合はいくつか方法があります。

 

 

対処法

IDENTITY_INSERTプロパティをON

IDENTITY_INSERT が OFFになっている場合は、ONに変更することでそのままINSERTが可能になります。

-- IDENTITY_INSERTプロパティをONに変更
SET IDENTITY_INSERT SAMPLE_TABLE ON;
-- 再度対象テーブルにデータを登録
INSERT INTO SAMPLE_TABLE VALUES(・・・);

 

 

identityプロパティをリセット/変更する

identityプロパティの発番する値を変更してINSERT方法です。

--SAMPLE_TABLEテーブルのidentityの現在値を「50」に設定
DBCC CHECKIDENT('SAMPLE_TABLE', RESEED, 50)
-- 再度対象テーブルにデータを登録
INSERT INTO SAMPLE_TABLE VALUES( 50, ・・・);

 

以上です。



投稿日:2020-04-21    更新日:2020-04-21

[スポンサーリンク]

関連記事
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]

最近の記事