2013-12-02 3 views
4

У меня есть таблица сотрудников со столбцами (id, name, address, age). Этот триггер имеет другой оператор insert в той же таблице.Trigger with statement statement

create trigger emp_trigger 
on employee 
for insert 
as 
insert into employee (name, [address], age) 
values ('AutoCreated', 'inserted via trigger', 40) 

Теперь, когда я вставляю что-то в таблицу сотрудников, триггер получает выполнение, которое вставляет другую запись в таблицу. Однако триггер не получает выполнение дальше. Я ожидал, что он создаст бесконечный цикл, потому что операция вставки внутри триггера рекурсивно вызовет триггер.

Я хочу знать, почему вставка внутри триггера выполняет триггер.

ответ

4

Триггер не называет себя рекурсивно, если не задан параметр базы данных RECURSIVE_TRIGGERS.

[Это делается по понятным причинам!]

Вы можете включить/выключить на уровне базы данных с:

ALTER DATABASE databasename 
SET RECURSIVE_TRIGGERS ON | OFF 

Ref: CREATE TRIGGER