Задержка вызова триггера после оракула вставки - PullRequest
3 голосов
/ 23 июля 2010

Есть ли способ сделать это?Я нашел добавление

DBMS_LOCK.sleep() 

к началу кода триггера путем поиска в Google, но это блокирует вставку.Я хотел бы вставить данные, но триггер должен сработать только после произвольной задержки.Спасибо.

1 Ответ

7 голосов
/ 23 июля 2010

Было бы полезно, если бы мы знали , почему вы хотите эту задержку, и что триггер должен делать после задержки.Однако одной из возможностей является использование пакета DBMS_JOB в триггере для создания задания, которое запускается сразу после вставки.Например:

create trigger trg
after insert on tab
for each row
declare
  jl_ob number;
begin
  dbms_job.submit
    ( job => l_job
    , what => 'myproc(:new.id);'
    , next_date => sysdate+1/24/60 -- One minute later
    );
end;

В качестве альтернативы триггер может вставить строку в специальную таблицу, а DBMS_JOB, выполняемый по расписанию, например, каждые 10 минут, может обрабатывать строки в таблице, возраст которых превышает X минут..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...