我有一个插入后触发器,当我在表中插入单个记录时,它正常工作。
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
问题:
当我尝试使用BulkCopy从我的C#代码插入多个记录时,触发器无效。
答案 0 :(得分: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
答案 1 :(得分:-1)
每个语句触发一次触发器,而不是每行在数据库上触发。因此,您需要更改插入批量记录的方式。
看看这篇msdn文章
http://msdn.microsoft.com/en-us/library/ms188365.aspx
这解释了如何在批量插入中使用触发器。