IDENTITY_INSERT
がOFFに設定されているときに挿入を実行するとエラーが発生するのはなぜですか?
SQL Server 2008で正しく有効にするにはどうすればよいですか。 SQL Server Management Studioを使用していますか?
私はこのクエリを実行しました:
SET IDENTITY_INSERT Database. dbo. Baskets ON
その後、コマンドが正常に完了したというメッセージがコンソールに表示されました。ただし、アプリケーションを実行しても、以下のようなエラーメッセージが表示されます。
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
SQL経由で MSDN に従って
SET IDENTITY_INSERT sometableWithIdentity ON
INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...)
SET IDENTITY_INSERT sometableWithIdentity OFF
完全なエラーメッセージは正確に何が悪いのかを教えてくれます...
IDENTITY_INSERTがOFFに設定されていると、テーブル 'sometableWithIdentity'のID列に明示的な値を挿入できません。
IDENTITY_INSERTをONに設定した後でも挿入できないという問題がありました。
問題は、私は列名を指定していないということであり、そして何らかの理由でそれがそれを好まなかったということでした。
INSERT INTO tbl Values(vals)
だから基本的に完全なINSERT INTO tbl(cols)値(vals)
インポート:INSERT
ステートメントに列を書く必要があります
INSERT INTO TABLE
SELECT * FROM
正しくありません。
Insert into Table(Field1,...)
Select (Field1,...) from TABLE
正しい
私はこれが古いスレッドであることを知っていますが、私はこれにぶつかっただけです。ユーザーが他のセッションSet IDENTITY_INSERTをオンにした後にIdentity列で挿入を実行しようとしている場合、ユーザーは上記のエラーを受け取ることになります。
Identity Insert値の設定とそれに続くInsert DMLコマンドは同じセッションで実行されます。
ここで@BeginnerはIdentity Insertを個別にONに設定してから、自分のアプリケーションから挿入を実行していました。彼は以下のエラーを得た理由です:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
SET IDENTITY_INSERTデータベースを置くことが必要に見えます。 dbo。バスケットON。各SQL INSERTがバッチを送信する前に。/1つのSET IDENTITY_INSERT ... ONで始まる複数のINSERT ... VALUES ..コマンドを送信できます。先頭の文字列/の間にバッチセパレータを置かないでください。/ /送信ブロックの後にSET IDENTITY_INSERT ... ONが機能しなくなる理由がわかりません(例:c#の.ExecuteNonQuery()の場合)。 IDENTITY_INSERT ... ON。次のSQLコマンド文字列の先頭にもあります。
PRIMARY KEYフィールドがあり、重複している値を挿入しているか、INSERT_IDENTITYフラグがonに設定されている場合に、これが発生する可能性があります。