¿Debo agregar SET NOCOUNT ON a todos mis disparadores?


21

Es bastante conocido que deberías tener

SET NOCOUNT ON   

de forma predeterminada al crear nuevos procedimientos almacenados.

Microsoft ha cambiado la plantilla predeterminada para incluir esto en 2012. Pensé que esto debería ser lo mismo para los desencadenantes, pero no está incluido en la plantilla.

¿Es esto intencional o simplemente un descuido?


1
Si alguna vez edita valores a través del editor de la tabla SSMS, esto es necesario para los desencadenantes; de lo contrario, el mensaje adicional de conteo de filas del desencadenante lo confunde
Martin Smith

Es un descuido muy probablemente. También consulte stackoverflow.com/questions/1483732/set-nocount-on-usage please
gbn

Respuestas:


24

Personalmente, lo recomendaría: no puedo pensar en una razón para no hacerlo, a menos que tenga un desencadenante en el que específicamente desee señalar el hecho de que está haciendo un trabajo adicional detrás de escena.

Escribí un breve artículo sobre cosas a tener en cuenta al escribir disparadores, y este es uno de ellos:
http://dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

tl; versión dr:

  1. Cortar la charla. Use NOCOUNT.
  2. Asegúrese de que su gatillo pueda manejar múltiples filas.
  3. Prevenga desencadenantes desencadenantes y recursividad.
  4. Evite el rendimiento horrible de las tablas virtuales INSERTED y DELETED.

La URL no está actualizada. Aquí está la URL actualizada: dave.brittens.org/blog/writing-well-behaved-triggers.html
Jonathon Watney

Buena atrapada. Acabo de actualizar mi sitio a Pelican hace un par de semanas. ;)
db2
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.