SQL Server запускает вопрос друг друга - PullRequest
3 голосов
/ 11 ноября 2008

У меня есть триггер аудита, который автоматически помещает время, когда что-то было обновлено, и пользователя, который обновил поля во всех моих таблицах. У меня есть другой набор триггеров, которые записывают информацию о событиях из обновлений в таблицу событий. Проблема в том, что когда кто-то что-то обновляет, информация о событии запускается дважды из-за первых триггеров. Как я подавляю дублирующиеся записи?

Ответы [ 4 ]

1 голос
/ 11 ноября 2008

Посмотрите на функцию TRIGGER_NESTLEVEL. Возвращает текущий уровень вложенности триггера. Вы можете проверить это, чтобы предотвратить дублирование.

1 голос
/ 11 ноября 2008

Вы также можете отключить вложенные триггеры все вместе, если у вас достаточно разрешений (некоторые веб-хосты не позволяют вам сделать это). Существует хранимая процедура (Sql 2005) под названием sp_configure, которая позволяет вам изменять конфигурацию сервера. Приведенный ниже оператор отключает вложенные триггеры, которые не позволяют триггеру запускать другой триггер.

exec sp_configure 'вложенные триггеры', 0

1 голос
/ 11 ноября 2008

Я думаю, у вас есть 2 варианта:

  1. Либо объедините оба набора триггеров в один.

  2. Или существует параметр для каждой базы данных, который позволяет отключить рекурсивное срабатывание триггеров.

0 голосов
/ 17 сентября 2009

Отключение триггера-пожара-триггера также можно сделать в SS2005, зайдя в SS Mgt Studio и выбрав значок соответствующего сервера, щелкнув правой кнопкой мыши и выбрав «Свойства». Затем выберите «Дополнительно» из списка слева и установите для «Разрешить запуск триггеров запуск других» значение «Ложь».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...