【问题标题】:Do SQL Server updates happen one row at a time? [duplicate]SQL Server 更新是否一次发生一行? [复制]
【发布时间】:2019-03-25 19:24:02
【问题描述】:

刚刚有人告诉我,SQL Server 更新一次执行一行。所以如果更新了 100 行,一个触发器也会被执行 100 次。

这是准确的吗?这是否也意味着Inserted 伪表一次只能保存一行?

【问题讨论】:

  • 什么是插入伪表?对于这个问题,您可能会在 dba.stackexchange.com 上获得更好的运气
  • 我所知道的唯一有这个限制的是 Linq to SQL...
  • 谢谢 - 我不知道这些。您可以在插入或更新期间访问这些表吗?

标签: sql-server triggers sql-update


【解决方案1】:

不,这是不正确的。如果单个 UPDATE 影响多行,则该表上的 TRIGGER 只会触发一次,并且虚拟表 inserteddeleted 将包含受 UPDATE 影响的所有行。

【讨论】:

  • 这就是我一直以来的工作方式,但有更多经验的人告诉我不然。您是否有任何文档,以便我可以将其标记为答案?
  • 我发现经验和知识是有区别的......我共事过的一些最年轻的人是知识最渊博的。
  • 不是随便的;我是根据经验来回答的。你为什么不创建一个简单的测试并为告诉你的人运行它?创建一个触发器,将inserted 中的行插入一个空表并测试多行更新,并向他显示结果。还有什么比这更好的文档?
  • 测试多行更新是什么意思?
  • 在包含多行数据的表(表 1)上放置触发器。触发器会将inserted 虚拟表中的所有行插入到一个空表中(表2)。然后对表 1 执行 UPDATE,由于 WHERE 子句,该更新将更新多行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 2011-02-22
  • 1970-01-01
  • 2016-06-04
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多