データベーステーブルに値を挿入しているときにエラーが発生します。
「IDENTITY_INSERTがOFFに設定されている場合、テーブル'ref_user'にID列の明示的な値を挿入できません。」
私を助けてください ???
データベーステーブルに値を挿入しているときにエラーが発生します。
「IDENTITY_INSERTがOFFに設定されている場合、テーブル'ref_user'にID列の明示的な値を挿入できません。」
私を助けてください ???
SET IDENTITY_INSERT tblename on
このエラーが発生する理由は、自動インクリメント フィールドがプライマリ KE として使用されているテーブルに挿入しようとしているためです。
コマンドでは、挿入後にIdentity_Insert On
を設定できます。Off
何かのようなもの:
new SqlCommand("SET IDENTITY_INSERT ON;
Insert into yourtable .....;
SET IDENTITY_INSERT OFF;", yourConnection);
試す
構文:
SET IDENTITY_INSERT [ database. [ owner. ] ] { table } { ON | OFF }
元:
SET IDENTITY_INSERT dbo.your_table ON;
編集:
ID 挿入を指定する場合は、insert ステートメントで列リストを明示的に指定する必要があることに注意してください。
例:
create table test_identity (id int identity , val int)
SET IDENTITY_INSERT dbo.test_identity On;
insert into test_identity (id,val) select 1,2
SET IDENTITY_INSERT dbo.test_identity OFF;
このエラーに慣れていない場合は、列に値を指定してはならない場所に値を指定しようとしている可能性が高くなります。
テーブルがあるとします:
CREATE TABLE T (
ID int IDENTITY(1,1) not null,
Col1 varchar(10) not null
);
次のような挿入を試みた場合:
INSERT INTO T(ID,Col1) values (1,'abc');
投稿したエラーが表示されます。通常、実際にやりたいことは次のとおりです。
INSERT INTO T(Col1) values ('abc');
(そして、SELECT SCOPE_IDENTITY()
後で挿入された値を取得する可能性があります)。
しかし、提起されたあなたの質問に対しては、次のようにします。
SET IDENTITY_INSERT T ON;
INSERT INTO T(ID,Col1) values (1,'abc');
SET IDENTITY_INSERT T OFF;
一般に、どの値が列に割り当てられているかを気にする必要はありませんIDENTITY
。それらはたまたまコンパクトな数値表現を持つ魔法の値です。ただし、それらはブラック ボックスとして扱う必要があります。数字に意味を割り当てると、問題が発生する傾向があります。