テーブルにエントリを一括追加するストアド プロシージャに取り組んでいます。
これが私がこれまでに得たものです:
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 値を除外することだけであり、すべてがうまく一致するはずです。しかし、私が間違っていない限り、手順はすでにそのように設定されており、まだ気に入っていません。
私が見逃している可能性があるものはありますか?