2013-06-14 2 views
1

SQL Server 2005 или 2008:
У меня есть триггер UPDATE, который будет вставлять новую запись в ту же таблицу, только если изменяется определенное поле состояния.Обновление триггера вставляет новую запись, но триггер вставки не срабатывает

Новая запись создается правильно, поэтому работает триггер UPDATE. Но триггер INSERT не срабатывает, когда запись создается таким образом.

Когда я вытаскиваю инструкцию вставки из триггера и запускаю ее отдельно, триггер INSERT срабатывает и выполняет корректно, как и при создании записи из формы.

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

+1

Положите код, чтобы найти ошибки, и объясните больше, его запутанность – AAlferez

+0

Это можно сделать. Триггеры могут быть вложены в максимум до 32 уровней. Как предложила Энн, добавьте код. Это даст нам представление о том, что пошло не так. – Talasila

ответ

0

Вам необходимо включить вложенные триггеры для вашего сервера. Вот как:

EXEC sp_configure 'show advanced options', 1; 
GO 
RECONFIGURE ; 
GO 
EXEC sp_configure 'nested triggers', 1 ; 
GO 
RECONFIGURE; 
GO 

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

+0

Спасибо ... Я попробую. – Dave

+0

Поскольку это требуется только при выполнении определенного условия, возможно ли настроить триггеры в триггере обновления, а затем отключить их вставки> – Dave

+0

@Dave Не рекомендуется (и, возможно, даже не возможно) сделать что-то как это происходит в интерактивной транзакции. Вы должны рассматривать это как все или ничего. Однако сначала вы должны проверить, включено ли это или нет (обычно это так). – RBarryYoung