1

テーブルに単一のレコードを挿入するときに正常に機能する after Insert トリガーがあります。

ALTER TRIGGER [dbo].[Insert_Into_Questions_Table] 
ON  [dbo].[Questionmaster]
After Insert
AS 
BEGIN
Insert into Questions(Question_questionid,Question_questionname,Question_answer1,Question_answer2,Question_answer3,Question_answer4,Exam_examtypeid,User_Userid)
select Question_questionid,Question_questionname,Question_answer1,Question_answer2,Question_answer3,Question_answer4,Exam_examtypeid,User_Userid from Inserted
SET NOCOUNT ON;

-- Insert statements for trigger here

END

問題:

C# コードから BulkCopy を使用して複数のレコードを挿入しようとすると、トリガーが機能しません。

4

2 に答える 2

4

デフォルトでは、BULK INSERT ステートメントはトリガーを実行しません。ただし、FIRE_TRIGGERS 修飾子を使用してトリガーを有効にすることができます。

http://msdn.microsoft.com/en-us/library/ms188365(v=sql.105).aspx

SQL Server 2005 以降のバージョンでは、トリガーに行のバージョン管理を使用し、行のバージョンを tempdb のバージョン ストアに格納します。トリガーを使用して大量のデータ レコードのバッチを一括インポートする前に、バージョン ストアに対するトリガーの影響に対応するために tempdb のサイズを拡張する必要がある場合があります。詳細については

http://msdn.microsoft.com/en-us/library/ms175492(v=sql.105).aspx

于 2012-09-11T09:23:53.743 に答える
-1

トリガーは、データベースの行ごとではなく、ステートメントごとに 1 回起動されます。したがって、一括レコードを挿入する方法を変更する必要があります。

この msdn の記事
http://msdn.microsoft.com/en-us/library/ms188365.aspx
をご覧ください。一括挿入でトリガーを使用する方法が説明されています。

于 2012-09-11T09:32:12.590 に答える