Dois-je ajouter SET NOCOUNT ON à tous mes déclencheurs?


21

C'est une connaissance assez courante que vous devriez avoir

SET NOCOUNT ON   

par défaut lors de la création de nouvelles procédures stockées.

Microsoft a changé le modèle par défaut pour l'inclure en 2012. Je pensais que cela devrait être le même pour les déclencheurs, mais il n'est pas inclus dans le modèle.

Est-ce intentionnel ou simplement un oubli?


1
Si vous modifiez des valeurs via l'éditeur de table SSMS, cela est requis pour les déclencheurs, sinon le message de nombre de lignes supplémentaires du déclencheur le confond
Martin Smith

c'est un oubli très probable. Voir également stackoverflow.com/questions/1483732/set-nocount-on-usage s'il vous plaît
gbn

Réponses:


24

Personnellement, je le recommanderais - je ne peux pas penser à une raison de ne pas le faire, à moins que vous n'ayez un déclencheur où vous voulez spécifiquement souligner le fait qu'il fait un travail supplémentaire en coulisses.

J'ai écrit un court article sur les choses à surveiller lors de l'écriture de déclencheurs, et c'est l'un d'entre eux:
http://dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

tl; version dr:

  1. Coupez le bavardage. Utilisez NOCOUNT.
  2. Assurez-vous que votre déclencheur peut gérer plusieurs lignes.
  3. Empêchez la cascade et la récursivité des déclencheurs sans limites.
  4. Évitez les performances horribles des tables virtuelles INSÉRÉES et SUPPRIMÉES.

L'URL est obsolète. Voici l'URL mise à jour: dave.brittens.org/blog/writing-well-behaved-triggers.html
Jonathon Watney

Bonne prise. Je viens de mettre à jour mon site vers Pelican il y a quelques semaines. ;)
db2
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.