SQL SERVER IDENTITY_INSERT OFF

PC

Warning: Invalid argument supplied for foreach() in /home/xs642990/dark-pla.net/public_html/wp-content/plugins/bravo-neo/bravo-neo.php(12) : eval()'d code on line 647

SQLServerで、テーブルにデータを挿入する際のお話です。

ふつう、IDにした列は自動で採番されるので、そこに自分で決めた数字を使ってデータを挿入することってできませんよね。
たとえ、それらがいずれも、その挿入するデータの中で一意の数字になっていたり、既存のデータを加味しても一意になっている、というケースでも。

こんな感じに無理やりデータを入れようとすると、

INSERT INTO z_T_ID_Btn
(ID_Btn, Color)
VALUES
(6, 'gold')

こんなメッセージが。

メッセージ 544、レベル 16、状態 1、行 1
IDENTITY_INSERT が OFF に設定されているときは、テーブル ‘z_T_ID_Btn’ の ID 列に明示的な値を挿入できません。

結構丁寧に、エラー文を排出してくれているので、対策もわかっちゃうのですが・・・。
はい。
IDENTITY_INSERT を ON にしてやればいいんですね。

SET IDENTITY_INSERT z_T_ID_Btn ON;

INSERT INTO z_T_ID_Btn
(ID_Btn, Color)
VALUES
(6, 'gold')

SET IDENTITY_INSERT z_T_ID_Btn OFF;

そのままにしておくと面倒なことが起きるので、その作業が終わったら OFF にしておくことをお勧めします。

一点注意すべき点があるとすれば、この作業の後、自動採番は、このID列のなかの一番大きな数字の次の数から始まります。

ガードを下げさせて半ば強引にデータを挿入させるような感じになるので、多用することは無いと思いますが、出先のDBのテーブルのデータをごそっと塗り替えたいケースとか、あるにはあるので。

SQL SERVER本

楽天ウェブサービスセンター
タイトルとURLをコピーしました