【发布时间】:2011-03-19 23:00:36
【问题描述】:
有没有办法做到这一点?我发现添加,
DBMS_LOCK.sleep()
通过谷歌搜索到触发代码的开头,但它会阻止插入本身发生。我想插入数据,但触发器只能在任意延迟后触发。谢谢。
【问题讨论】:
有没有办法做到这一点?我发现添加,
DBMS_LOCK.sleep()
通过谷歌搜索到触发代码的开头,但它会阻止插入本身发生。我想插入数据,但触发器只能在任意延迟后触发。谢谢。
【问题讨论】:
如果我们知道为什么你想要这个延迟,以及触发器应该在延迟之后做什么,那将会很有帮助。但是,一种可能性是在触发器中使用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 分钟的行。
【讨论】: