Могу ли я иметь триггер для событий «до» и «после»?

Я попробовал описанный выше сценарий с помощью следующего фрагмента кода

CREATE OR REPLACE TRIGGER test_bf_af2
AFTER LOGON ON SCHEMA and 
BEFORE LOGOFF ON SCHEMA

BEGIN
  --some logic
END;
/

но дал мне ошибку, сказав

Отчет об ошибке: ORA-04079: неверная спецификация триггера

  1. 00000 - неверная спецификация триггера

* Причина: оператор create TRIGGER недействителен.

* Действие: проверьте правильность синтаксиса оператора.

Итак, возможно ли иметь оба типа или нет? если да, то как я могу этого добиться?


person dhpratik    schedule 28.02.2019    source источник
comment
Вы не можете (насколько я знаю). Вам понадобится два (2) отдельных триггера.   -  person Abra    schedule 28.02.2019


Ответы (1)


С помощью обычного триггера DML можно иметь несколько событий (INSERT, UPDATE) в одном триггере. Однако время должно быть одинаковым: либо ДО, либо ПОСЛЕ.

То же самое и с системными триггерами. Поскольку Oracle не поддерживает ни BEFORE LOGON, ни AFTER LOGOFF (по очевидным причинам), вам нужны два отдельных триггера.

person APC    schedule 28.02.2019