我正在为我正在做的一些事情做一些阅读和研究。我知道批量插入是做什么以及怎么做的。虽然我在一个街区。使用sql触发器,您可以在插入时做一些很酷的事情。但是在大容量插入时会发生什么呢。主要是。bulk insert在普通上下文中会做这样的事情吗
Insert into table values('some value')--->sql triger
Insert into table values('some value')--->sql triger
Insert into table values('some value')--->sql triger诸若此类。在这种情况下,在每行之后将触发insert触发器,sql将一直等到触发器完成,直到到达下一行。
我在这里读了一下on bulk inserts,发现它总是更好。但是这对insert的触发器有什么影响呢?为任何糟糕的解释或任何事情道歉。
发布于 2014-12-01 21:21:12
正如文档所述,触发器不会在大容量插入上运行。
但是,您可以大容量插入到临时表中,然后执行insert INSERT到SELECT FROM temp table,您将获得这两个表的所有优势-快速上载和触发器等。
如果您使用C#,那么也可以避免SqlBulkCopy类中可怕的锁定代码(在表中)。
发布于 2014-12-03 19:32:36
在SQL中,表上的触发器可以按行执行,也可以按语句执行。您所描述的行为是每行执行的触发器的特征,但SQL Server的SQL风格(称为Transact-SQL)不支持它们。SQL Server中只有每个语句的触发器。
此外,如果您所说的“大容量插入”指的是Transact-SQL的特定BULK INSERT语句,那么TomTom在他的回答中所说的几乎是正确的:默认情况下,触发器不会在大容量插入上执行。您可以通过添加FIRE_TRIGGERS子句来指定它们这样做,在这种情况下,每个insert触发器将在每个语句中执行一次,如前所述。
https://stackoverflow.com/questions/27229307
复制相似问题