【发布时间】:2015-06-06 21:07:44
【问题描述】:
我正在尝试编写触发器。要求是,每当ticketing_table 的ticket_status 列有更新时,我需要在一小时后将列值从“正在工作”更改为“已完成”。我不确定触发器是否是最好的方法。如果创建触发器是唯一的方法,需要一些建议 - 如果是,那么我们如何指定时间间隔来满足这样的要求?任何帮助,将不胜感激 。谢谢。
create or replace TRIGGER update_status_trigger
after UPDATE of ticket_status ON ticketing_Table
for each row
when (new.ticket_status = 'Working')
BEGIN
:new.ticket_status := 'Completed';
END;
【问题讨论】:
-
不,触发器不是这样做的方法。
-
嗯...我也有同样的看法。但是那我该如何实现这个功能呢?我应该在我正在创建的触发器中引入类似于 sleep 的东西吗?
-
创建一个 Oracle 作业。将计时器设置为每隔几分钟重复一次工作。在工作中,只需使用早于 1 小时的日期更新每个“工作”行的状态。单线
-
使用触发器中的 DBMS_JOB 创建作业。这样做的好处是,如果原来的更新没有提交或者回滚,作业也会被回滚,不会执行。
标签: sql oracle triggers oracle10g eventtrigger