是否应将SET NOCOUNT ON添加到所有触发器?


21

您应该拥有的相当常识

SET NOCOUNT ON   

创建新存储过程时默认情况下。

Microsoft已更改默认模板,以在2012年将其包括在内。我认为触发器应该与默认模板相同,但模板中未包含该模板。

这是有意还是仅仅是疏忽?


1
如果您曾经通过SSMS表编辑器编辑值,则触发器需要使用此值,否则触发器会产生额外的行计数消息,这会使它感到困惑
Martin Smith

这很可能是疏忽。另请参阅stackoverflow.com/questions/1483732/set-nocount-on-usage
GBN

Answers:


24

就个人而言,我会建议这样做-我想不出没有理由,除非您有一个触发器,在此您特别想指出事实,即它正在幕后进行其他工作。

我写了一篇简短的文章,介绍编写触发器时要注意的事情,这就是其中之一:http :
//dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

tl; dr版本:

  1. the不休。使用NOCOUNT。
  2. 确保触发器可以处理多行。
  3. 防止无限制的触发器级联和递归。
  4. 避免INSERTED和DELETED虚拟表的可怕性能。


接得好。几周前,我刚刚将网站更新为Pelican。;)
db2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.