1

データベーステーブルに値を挿入しているときにエラーが発生します。

「IDENTITY_INSERTがOFFに設定されている場合、テーブル'ref_user'にID列の明示的な値を挿入できません。」

私を助けてください ???

4

4 に答える 4

3
SET IDENTITY_INSERT tblename on
于 2012-09-25T06:19:28.970 に答える
3

このエラーが発生する理由は、自動インクリメント フィールドがプライマリ KE として使用されているテーブルに挿入しようとしているためです。

コマンドでは、挿入後にIdentity_Insert Onを設定できます。Off何かのようなもの:

new SqlCommand("SET IDENTITY_INSERT ON;
               Insert into yourtable .....;
               SET IDENTITY_INSERT OFF;", yourConnection);
于 2012-09-25T06:20:02.467 に答える
0

試す

構文:

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;
于 2012-09-25T06:17:52.007 に答える
0

このエラーに慣れていない場合は、列に値を指定してはならない場所に値を指定しようとしている可能性が高くなります。

テーブルがあるとします:

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。それらはたまたまコンパクトな数値表現を持つ魔法の値です。ただし、それらはブラック ボックスとして扱う必要があります。数字に意味を割り当てると、問題が発生する傾向があります。

于 2012-09-25T06:19:50.303 に答える