0

最近データ テーブルを変更しました。列を削除し、ID = True および ID シード = 1、ID 増分 = 1 として定義する新しい列を追加しました。STORE PROCEDURE によってこのテーブルにデータを挿入しようとすると、この例外が発生します。 :

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

次の行を追加する必要があることがわかりました: SET IDENTITY_INSERT [dbo].[AirConditioner] ON そして最後に OFF 追加しましたが、それでも例外がスローされます...

私のストア手順は画像として添付されていますここに画像の説明を入力

4

4 に答える 4

4

SQL Server が ID 列に値を割り当てます。@ID挿入ステートメントから削除し、ステートメントを削除する必要がありIDENTITY_INSERTます。

于 2011-06-23T13:23:54.230 に答える
0

列リストが使用され、IDENTITY_INSERTがONの場合にのみ指定できます。

最初の条件である列リストを忘れています。列リストは、テーブル名と。の間の(通常)オプションの要素ですvalues。次のように指定する必要があります。

INSERT INTO AirConditioner (ID, CategoricNumber, ...)
VALUES(@ID, @CategoricNumber, ...)
于 2011-06-23T13:28:27.363 に答える
0

setidentityinsertを使用しないでください。IDを持っている場合は、SQLサーバーにそこに入れる値を決定させる必要があります。

ALTER PROCEDURE [dbo].[AddAirConditioner] @CategoricNumber int, @Name nvarchar(50),
@PicName nvarchar(100), @ShortDetails nvarchar(200), @Details nvarchar(2000), 
@Price int, @ImagePath nvarchar(500), @AirConditionerType nvarchar(50), @COP float, 
@BTU float, @ProdType nvarchar(20), @ProdIndex int 
AS   

INSERT INTO AirConditioner VALUES( @CategoricNumber, @Name, @PicName, 
@ShortDetails, @Details, @Price, @ImagePath, @AirConditionerType, @COP,
@BTU, @ProdType, @ProdIndex) 

子テーブルで使用するためにIDを取得する必要がある場合は、scope_identityまたはoutput句を使用します。使用方法については、Booksonlineでこれらを調べてください。

于 2011-06-23T13:28:35.567 に答える
-1

置いてみる

SET IDENTITY_INSERT [dbo].[AirConditioner] ON
GO

変更手順の前に

于 2011-06-23T13:22:53.040 に答える