插入oracle后延迟触发器调用

时间:2010-07-23 06:55:26

标签: oracle plsql triggers

有没有办法做到这一点?我找到了补充,

DBMS_LOCK.sleep() 

通过谷歌搜索到触发器代码的开头,但它阻止了插件本身的发生。我想插入数据但触发器应该在任意延迟后触发。感谢。

1 个答案:

答案 0 :(得分:7)

如果我们知道为什么你想要这个延迟,以及触发器在延迟之后应该做什么会有所帮助。但是,一种可能性是使用触发器中的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分钟的行。