Czy powinienem dodać SET NOCOUNT ON do wszystkich moich wyzwalaczy?

21

Jest to dość powszechna wiedza, którą powinieneś mieć

SET NOCOUNT ON   

domyślnie podczas tworzenia nowych procedur przechowywanych.

Microsoft zmienił domyślny szablon, aby uwzględnić go w 2012 roku. Pomyślałem, że powinien być taki sam dla wyzwalaczy, ale nie jest on uwzględniony w szablonie.

Czy jest to celowe czy tylko niedopatrzenie?

Zniszczone dobra
źródło
1
Jeśli kiedykolwiek edytujesz wartości za pomocą edytora tabel SSMS, jest to wymagane w przypadku wyzwalaczy, w przeciwnym razie komunikat o dodatkowej liczbie wierszy z wyzwalacza myli go
Martin Smith,
najprawdopodobniej jest to niedopatrzenie. Zobacz także stackoverflow.com/questions/1483732/set-nocount-on-usage, proszę
gbn

Odpowiedzi:

24

Osobiście poleciłbym to - nie mogę wymyślić powodu, aby tego nie robić, chyba że masz wyzwalacz, w którym szczególnie chcesz przywołać fakt, że wykonuje on dodatkową pracę za kulisami.

Napisałem krótki artykuł o rzeczach, na które należy zwrócić uwagę podczas pisania wyzwalaczy, i jest to jeden z nich:
http://dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

wersja tl; dr:

  1. Przestań gadać. Użyj NOCOUNT.
  2. Upewnij się, że Twój wyzwalacz obsługuje wiele wierszy.
  3. Zapobiegaj kaskadowaniu i rekurencji wyzwalaczy bez ograniczeń.
  4. Unikaj strasznej wydajności wirtualnych tabel WSTAWIONY i USUWANY.
db2
źródło
URL jest nieaktualny. Oto zaktualizowany adres URL: dave.brittens.org/blog/writing-well-behaved-triggers.html
Jonathon Watney
Dobry chwyt Właśnie zaktualizowałem moją stronę do Pelican kilka tygodni temu. ;)
db2