Должен ли я добавить SET NOCOUNT ON ко всем моим триггерам?


21

Это довольно распространенное знание, что вы должны иметь

SET NOCOUNT ON   

по умолчанию при создании новых хранимых процедур.

Microsoft изменила шаблон по умолчанию, чтобы включить его в 2012 году. Я думал, что это должно быть то же самое для триггеров, но он не включен в шаблон.

Это преднамеренное или просто недосмотр?


1
Если вы когда-либо редактируете значения с помощью редактора таблиц SSMS, это требуется для триггеров, в противном случае сообщение о дополнительном количестве строк из триггера смущает его
Мартин Смит,

это скорее всего недосмотр. Также смотрите stackoverflow.com/questions/1483732/set-nocount-on-usage пожалуйста
ГБН

Ответы:


24

Лично я бы порекомендовал это - я не могу придумать причину, чтобы не делать этого, если у вас нет триггера, когда вы специально хотите высказать тот факт, что он выполняет дополнительную работу за кулисами.

Я написал небольшую статью о том, на что нужно обратить внимание при написании триггеров, и это один из них:
http://dave.brittens.org/2012/03/29/writing-well-behaved-triggers/

TL; DR версия:

  1. Сними болтовню. Используйте NOCOUNT.
  2. Убедитесь, что ваш триггер может обрабатывать несколько строк.
  3. Предотвращение неограниченного каскадирования триггеров и рекурсии.
  4. Избегайте ужасной производительности виртуальных таблиц INSERTED и DELETED.

URL устарел. Вот обновленный URL: dave.brittens.org/blog/writing-well-behaved-triggers.html
Джонатон Уотни,

Хороший улов. Я только что обновил свой сайт до Пеликана пару недель назад. ;)
db2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.