Mik*_*ynn 0 .net c# sql-server triggers sqlbulkcopy
我对表上的每个插入执行触发器.我正在使用批量复制来对此表进行批量插入.我读过FireTriggers会在桌子上触发我的触发器,但它只进行一次,而不是每次插入.触发器从插入的项中获取一些数据,并将其插入另一个表中.我只看到在另一个表中插入了一行,而不是一行.我错过了一个选项吗?
var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default | SqlBulkCopyOptions.FireTriggers, transaction);
Run Code Online (Sandbox Code Playgroud)
"对于每个插入",或每个"行"?听起来你期望看到每一行的触发火.
这是关于触发器的常见误解 - 它们每行触发一次.他们没有.他们每次改变都会开火.在触发器的主体内部有一个名为"inserted"的虚拟表,其中包含插入的所有新行.听起来非常像数据库中的触发器只读取该表中的一行,而不是整个行.遗憾的是,这是很多人在SQL Server数据库中实现触发器的常见设计缺陷.