Чи слід додати 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. Уникайте жахливої ​​продуктивності ВСТАНОВАНИХ та ВІДКРИТИХ віртуальних таблиць.

URL-адреса застаріла. Ось оновлена ​​URL-адреса: dave.brittens.org/blog/writing-well-behaved-triggers.html
Джонатан Уотні

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