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?


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.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.