Soll ich allen meinen Triggern SET NOCOUNT ON hinzufügen?

21

Es ist ziemlich allgemein bekannt, dass Sie haben sollten

SET NOCOUNT ON   

Standardmäßig beim Erstellen neuer gespeicherter Prozeduren.

Microsoft hat die Standardvorlage 2012 so geändert, dass sie diese enthält. Ich war der Meinung, dass dies für Trigger gleich sein sollte, sie ist jedoch nicht in der Vorlage enthalten.

Ist das beabsichtigt oder nur ein Versehen?

Beschädigte Ware
quelle
1
Wenn Sie jemals Werte über den SSMS-Tabelleneditor bearbeiten, ist dies für Trigger erforderlich, da sonst die zusätzliche Zeilenzählungsmeldung des Triggers zu Verwirrung führt
Martin Smith,
Es ist höchstwahrscheinlich ein Versehen. Siehe auch stackoverflow.com/questions/1483732/set-nocount-on-usage please
gbn

Antworten:

24

Persönlich würde ich es empfehlen - ich kann mir keinen Grund vorstellen, es nicht zu tun, es sei denn, Sie haben einen Auslöser, bei dem Sie ausdrücklich darauf hinweisen möchten, dass es hinter den Kulissen zusätzliche Arbeit leistet.

Ich habe einen kurzen Artikel über Dinge geschrieben, auf die beim Schreiben von Triggern geachtet werden muss. Dies ist einer von ihnen:
http://dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

tl; dr version:

  1. Schneiden Sie das Geschwätz. Verwenden Sie NOCOUNT.
  2. Stellen Sie sicher, dass Ihr Trigger mehrere Zeilen verarbeiten kann.
  3. Verhindern Sie unbegrenzte Trigger-Kaskadierung und Rekursion.
  4. Vermeiden Sie eine schreckliche Leistung der virtuellen Tabellen INSERTED und DELETED.
db2
quelle
URL ist veraltet. Hier ist die aktualisierte URL: dave.brittens.org/blog/writing-well-behaved-triggers.html
Jonathon Watney
Guter Fang. Ich habe gerade vor ein paar Wochen meine Website auf Pelican aktualisiert. ;)
db2