web-dev-qa-db-ja.com

テーブル 'customers'のID列の明示的な値は、列リストが使用され、IDENTITY_INSERTがONの場合にのみ指定できます

可能性のある複製:
IDENTITY_INSERTがOFFに設定されている場合、テーブル「table」のID列に明示的な値を挿入できません

私はSQLが初めてです。 SQL Server 2008 ExpressエディションでINSERTクエリを作成しようとしています。

クエリは次のとおりです。

insert into customers
values(201, 'Singh', 'rajnish', '101 bhandup', 'mumbai', 'mp', 33321, 0, null, 123.89, 25.00)

しかし、次のエラーが発生します。

テーブル 'customers'のID列の明示的な値は、列リストが使用され、IDENTITY_INSERTがONの場合にのみ指定できます。

Stackoverflowを検索しました。同様のタイプの質問を見つけましたが、説明を理解できません。エラーを理解して修正するのを助けてください。

編集:

私がやろうとしました:

SET IDENTITY_INSERT customers ON;
insert into customers
values(201, 'Singh', 'rajnish', '101 bhandup', 'mumbai', 'mp', 33321, 0, null, 123.89, 25.00)
SET IDENTITY_INSERT customers OFF;

しかし、再び同じエラーが発生します。

10
user1716251

これを試して

SET IDENTITY_INSERT customers ON
GO
insert into customers(id, ...)
values(201,'Singh','rajnish','101 bhandup','mumbai','mp',33321,0,null,123.89,25.00)
SET IDENTITY_INSERT customers OFF
15

最初の値がID列の場合、次のように削除します。

insert into customers
values('Singh','rajnish','101 bhandup','mumbai','mp',33321,0,null,123.89,25.00)
3
Niklas

テーブルがIDフィールドを使用している場合、独自の値を選択します。これらの値を追跡して、重複を入力しようとしないようにし、独自の値を指定しようとするとこのエラーが生成されるようにします。

したがって、あなたの場合、AはIDフィールドとしてマークされたフィールドなしで行を挿入します。 SQLエンジンにそのフィールドの独自の値を選択させます。 (それが、IDフィールドの権利を使用する全体の理由です)

または、B。挿入を実行する前に identity_insert を有効にします(特定の値をキーとして挿入する正当な理由がある場合)。

また、 有効な挿入ステートメント を使用する必要があります。挿入する列と値を指定します。

2
RThomas