SQL Server инициирует запуск друг друга Вопрос

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


person Matthew Kruskamp    schedule 10.11.2008    source источник


Ответы (4)


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

person DJ.    schedule 10.11.2008

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

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

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

person Mitch Wheat    schedule 10.11.2008

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

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

person Dusda    schedule 11.11.2008

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

person Community    schedule 17.09.2009