批量插入。真的是什么?

时间:2014-12-01 13:17:01

标签: sql-server

我正在为我正在研究的一些事情做一些阅读和研究。我知道批量插入的作用以及如何进行。虽然我在一个街区。使用sql触发器,你可以在插入时做一些很酷的事情。但是批量插入会发生什么。为主。批量插入在普通上下文中执行类似的操作

Insert into table values('some value')--->sql triger
Insert into table values('some value')--->sql triger
Insert into table values('some value')--->sql triger

等等。 在这种情况下,在每一行之后,插入的触发器将触发,并且sql将一直等到完成,直到到达下一行。

我在这里做了一些阅读on bulk inserts并发现它总会更好。但这如何影响插入的触发器?对任何不好的解释或任何事情道歉。

2 个答案:

答案 0 :(得分:0)

据记录,触发器不会在批量插入时运行。

但是你可以批量插入临时表,然后执行INSERT INTO SELECT FROM TEMP TABLE,你就可以获得所有优势 - 快速上传和触发等等。

如果你做了C#,那么这也避免了SqlBulkCopy类中的可怕锁定代码(在表上)。

答案 1 :(得分:0)

在SQL中,表上的触发器可以按行或按语句执行。您描述的行为是每行执行的触发器的特征,但SQL Server的SQL风格(称为Transact-SQL)不支持它们。 SQL Server中只有per语句触发器。

此外,如果通过"批量插入"你的意思是Transact-SQL的特定BULK INSERT语句,那么TomTom在他的回答中所说的几乎是正确的:默认情况下触发器不会在BULK INSERT 上执行。您可以通过添加FIRE_TRIGGERS子句来指定它们,并且在这种情况下,每个语句将执行一次,如已经解释过的那样。