我正在使用 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/