0

テーブルにエントリを一括追加するストアド プロシージャに取り組んでいます。

これが私がこれまでに得たものです:

use [DebugDatabase]
go

set ansi_nulls on
go

set quoted_identifier on
go

create procedure [dbo].[AddMultipleErrors]
    @errors ErrorTableType readonly

as

declare @toInsert ErrorTableType

begin
insert into @toInsert select * from @errors
insert into [dbo].[Error] (ErrorMessage, FileId) select ErrorMessage, FileId from @toInsert
end
go

「テーブル '@toInsert' の ID 列の明示的な値は、列リストが使用され、IDENTITY_INSERT がオンの場合にのみ指定できます。」というメッセージが表示されます。

「declare」ステートメントの後に「set identity_insert @toInsert on」という行を追加しようとしましたが、「構文が正しくありません」というエラーが発生します。他のいくつかの場所に移動しようとしましたが、同じ結果になりました。

さて、私はいくつかの調査を行いましたが、実際には「identity_insert」をオンに設定したくないようです。これは、テーブルに ID を自動的に生成させるのではなく、ID を指定する必要があるためです。私は欲しいです。

おそらく、私がする必要があるのは、挿入呼び出しでテーブル内の個別の列をそれぞれ指定し、id 値を除外することだけであり、すべてがうまく一致するはずです。しかし、私が間違っていない限り、手順はすでにそのように設定されており、まだ気に入っていません。

私が見逃している可能性があるものはありますか?

4

2 に答える 2