2015-03-23 3 views
0

У меня есть два Tiggers на table1:Как предотвратить запуск триггера с помощью другого триггера?

  1. триггер # 1 после обновления обновляет последнее изменение столбца даты в table1
  2. спускового # 2 после обновления, если col1 является 0 он создает запись журнала в table2

Таким образом, проблема заключается в том, что при установке col1 в 0 триггер # 2 правильно создает запись в table2, но поскольку триггер # 1 снова изменяет запись, trigger # 2 создает еще одну запись журнала в table2.

Я хочу, чтобы триггер № 2 срабатывал, когда триггер # 1 изменяет любую запись.

+0

Один из способов будут проверить триггер # 2, был ли обновлен какой-либо столбец, кроме «последнего изменения» – Laurence

+0

Есть ли способ проверить, что было изменено? – fishmong3r

+0

https://msdn.microsoft.com/en-us/library/ms189799.aspx look для «Тестирование для UPDATE или INSERT действий для конкретных столбцов» – Laurence

ответ

-1

Вы можете в первом выпуске вызвать отключение триггера перед обновлением (при определенных обстоятельствах, обновить значение, то renable триггера

В первом триггере:.

if (cond1) 
      disable trigger starttrigger2 on table1 

    update table1 

    enable trigger starttrigger2 on table1 
+0

Sry, но должен был downvote, предложение просто слишком опасно, чтобы оставить его .. – dean

+0

Показывает разработчику, как отключить триггер так опасно? –

+0

ИМХО да, есть. В многопользовательской, очень транзакционной среде вы не можете быть уверены в том, что делают другие. Имейте из первых рук опыт решения проблем, вызванных им. – dean

Смежные вопросы