Devo adicionar SET NOCOUNT ON a todos os meus gatilhos?


21

É do conhecimento geral que você deveria ter

SET NOCOUNT ON   

por padrão ao criar novos procedimentos armazenados.

A Microsoft alterou o modelo padrão para incluí-lo em 2012. Eu pensei que isso deveria ser o mesmo para gatilhos, mas não está incluído no modelo.

Isso é intencional ou apenas uma supervisão?


1
Se você nunca editar valores através dos SSMS editor mesa este é necessário para gatilhos caso contrário, a mensagem de contagem de linha extra do gatilho confunde
Martin Smith

é uma supervisão muito provável. Veja também stackoverflow.com/questions/1483732/set-nocount-on-usage, por favor
gbn

Respostas:


24

Pessoalmente, eu o recomendaria - não consigo pensar em uma razão para não fazê-lo, a menos que você tenha um gatilho em que especificamente queira enfatizar o fato de que ele está fazendo um trabalho adicional nos bastidores.

Escrevi um pequeno artigo sobre coisas a serem observadas ao escrever gatilhos, e este é um deles:
http://dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

tl; dr versão:

  1. Corte a conversa. Use NOCOUNT.
  2. Verifique se o gatilho pode lidar com várias linhas.
  3. Impedir cascata e recursão ilimitadas do gatilho.
  4. Evite um desempenho horrível das tabelas virtuais INSERTED e DELETED.

O URL está desatualizado. Aqui está o URL atualização: dave.brittens.org/blog/writing-well-behaved-triggers.html
Jonathon Watney

Boa pegada. Acabei de atualizar meu site para Pelican há algumas semanas. ;)
db2
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.