c# - 使用 SqlBulkCopy 为每个插入的行触发触发器

标签 c# sql-server winforms triggers sqlbulkcopy

我正在使用 SqlBulkCopy 类在表 tbl_records 中一次插入 50k 行 我已经在此表上设置了一个 After Insert 触发器并使用以下代码

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 中的 First

我希望它应该为每一行触发。我该怎么做??

最佳答案

触发器永远不会按行触发。它们针对相应 DML 语句的所有行触发。重写您的触发器,使其能够处理包含许多行的 INSERTED 表。无论如何,这是最佳实践和必需的实践。

it is firing trigger for only first row inserted out of 50k rows

您一定是误解了这种情况,可能是因为您没有意识到触发器可以在虚拟表中包含多行。

关于c# - 使用 SqlBulkCopy 为每个插入的行触发触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19002947/

相关文章:

.net - 如何提高DataGridView的绘画性能?

c# - 当字符串为空时将 NULL 插入 SQL

c# - LinkBut​​ton 单击下载或删除

c# - 我的自动增量不是从1开始

c# - 数据表 : is deleting old DataRows before inserting new safe?

c# - SQLite中参数的使用

c# - GridView 检索每一行中的数据

c# - 从文本文件中选择帐户执行操作,然后选择另一个帐户并执行不同的操作

c# - 我是否在 C# 函数中适本地关闭了这个 SQL 连接?

sql - 为什么 object_id 总是返回 null?