2016-10-05 2 views
0

Я пытаюсь создать INSERT TRIGGER и UPDATE TRIGGER во всех таблицах в моей базе данных, которые управляют полями CreateBy и UpdateBy.Создание INSERT TRIGGER, который обновляет CreateBy и UpdateBy, не запуская UPDATE TRIGGER в той же таблице

Проблема, что я бегу в том, что следующий в моем триггере INSERT:

UPDATE MyTable 
SET CreatedBy = INSERTED.CreatedBy, 
    InsertDate = GetDate(), 
    UpdatedBy = INSERTED.UpdatedBy, 
    UpdateDate = GetDate() 
FROM INSERTED 
WHERE MyTable.Id = INSERTED.Id 

Проблема заключается в том, что это UPDATE заявление дополнительно запуская триггер UPDATE. Я не могу этого добиться. Как я могу это предотвратить?

+0

Является ли это вставка триггер MyTable? –

+1

Просьба предоставить полное определение вашего триггера – techspider

+0

Да MyTable - таблица, в которой запускается триггер. Проблема заключается в том, что триггер insert использует инструкцию update для установки полей createdby и updatedby. Это привело к запуску триггера обновления. Мне нужно было избежать этого. Пожалуйста, см. Ответ, который я опубликовал, и дайте мне знать, если у вас есть лучшие решения! –

ответ

0

Я нашел встроенную функцию SQL с именем IF TRIGGER_NESTLEVEL().

я был в состоянии обернуть триггер обновления со следующим предотвратить триггер обновления от запуска, когда триггер вставки работает:

IF TRIGGER_NESTLEVEL() < 2 
    --Trigger script here 
END