2009-11-10 3 views
6

Возможно ли выполнить хранимую процедуру внутри триггера?Выполнять процедуру в триггере

Спасибо

+0

Если я должен был просто выполнить его сам, тогда это сработает. Я хочу создать триггер, где он выполнит его, когда есть значение в поле – user207902

ответ

10

Да, как это:

create or replace trigger trg 
after insert on emp 
for each row 
begin 
    myproc(:new.empno, :new.ename); 
end; 
+0

. оно работает. Большое спасибо. – user207902

+0

Что: новый.empno? [означает: новый?] – Freelancer

+0

@Freelancer: в триггерах уровня на уровне Oracle вы можете ссылаться на значения столбцов до и после эффекта действия триггера, используя: old и: new. Это должно было быть триггером уровня, я просто добавил отсутствующую часть 'для каждой строки'. –

1

В SQL Server это так. Какие СУБД вы используете?

ETA: Oracle, а? У меня нет личного опыта, но this, кажется, указывает, что вы можете. Я нашел его по поисковой системе «Оракул триггер хранимой процедуры».

+0

Я использую Oracle – user207902

1

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

2

Да, вы можете запустить процедуру из триггера. Но, имейте в виду, что триггер & methodur e не должен иметь ту же таблицу.

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