消防触发使用SqlBulkCopy的每一个插入的行 [英] Fire trigger for every inserted row using SqlBulkCopy

查看:303
本文介绍了消防触发使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆