消防触发使用SqlBulkCopy的每一个插入的行 [英] Fire trigger for every inserted row using SqlBulkCopy
问题描述
我使用 SqlBulkCopy的
类在表中的时间 tbl_records
我必须插入50K行设置在该表中后插入
触发,并使用下面的代码
I am using SqlBulkCopy
class to insert 50k rows at a time in table tbl_records
I have set a After Insert
trigger on this table and using following code
SqlBulkCopy SqlBc1 = new SqlBulkCopy(strConnString, SqlBulkCopyOptions.FireTriggers);
// Set DataReader For SqlBulkCopy
sqlComm = new SqlCommand(strQuery, sqlTemCon);
sqlComm.CommandTimeout = 3600000;
sqlComm.CommandType = System.Data.CommandType.Text;
SqlDataReader dReader = sqlComm.ExecuteReader();
SqlBc1.WriteToServer(dReader);
但PROG执行后。这火触发仅首先
行了50K插入
我想它应该火的每一行。我怎样才能做到这一点?
I wanna it should fire for every row. How can i do this??
推荐答案
触发器不会触发每行。他们火相应的DML语句中的所有行。重写你的触发器,以便它能够与包含许多行单个
表应付。这是最好的做法,反正需要实践。
Triggers never fire per-row. They fire for all rows of the corresponding DML statement. Rewrite your trigger so that it can cope with the INSERTED
table containing many rows. This is best-practice and required practice anyway.
这是射击触发插入出50,000列仅第一行
it is firing trigger for only first row inserted out of 50k rows
您必须误解的情况,也许是因为你是不知道的触发器可以包含虚拟表中多行。
You must be misinterpreting the situation, maybe because you were unaware that triggers can contain multiple rows in the virtual tables.
这篇关于消防触发使用SqlBulkCopy的每一个插入的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!