首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大容量插入。它到底是什么?

大容量插入。它到底是什么?
EN

Stack Overflow用户
提问于 2014-12-01 21:17:01
回答 2查看 1.3K关注 0票数 0

我正在为我正在做的一些事情做一些阅读和研究。我知道批量插入是做什么以及怎么做的。虽然我在一个街区。使用sql触发器,您可以在插入时做一些很酷的事情。但是在大容量插入时会发生什么呢。主要是。bulk insert在普通上下文中会做这样的事情吗

代码语言:javascript
运行
复制
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的触发器有什么影响呢?为任何糟糕的解释或任何事情道歉。

EN

回答 2

Stack Overflow用户

发布于 2014-12-01 21:21:12

正如文档所述,触发器不会在大容量插入上运行。

但是,您可以大容量插入到临时表中,然后执行insert INSERT到SELECT FROM temp table,您将获得这两个表的所有优势-快速上载和触发器等。

如果您使用C#,那么也可以避免SqlBulkCopy类中可怕的锁定代码(在表中)。

票数 0
EN

Stack Overflow用户

发布于 2014-12-03 19:32:36

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

此外,如果您所说的“大容量插入”指的是Transact-SQL的特定BULK INSERT语句,那么TomTom在他的回答中所说的几乎是正确的:默认情况下,触发器不会在大容量插入上执行。您可以通过添加FIRE_TRIGGERS子句来指定它们这样做,在这种情况下,每个insert触发器将在每个语句中执行一次,如前所述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27229307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档