1

我有一个插入后触发器,当我在表中插入一条记录时它工作正常。

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

每个语句而不是数据库上的每行触发一次触发器。因此,您需要更改插入批量记录的方式。

看看这篇 msdn 文章
http://msdn.microsoft.com/en-us/library/ms188365.aspx
,它解释了如何在批量插入中使用触发器。

于 2012-09-11T09:32:12.590 回答