一小时后执行触发器Oracle

时间:2015-04-02 02:23:37

标签: sql oracle triggers oracle10g eventtrigger

我正在尝试编写触发器。要求是每当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;

1 个答案:

答案 0 :(得分:2)

我会这样做

DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'MY_JOB_' || to_char(systimestamp), --should be unique for each call 
                          JOB_TYPE      => 'PLSQL_BLOCK',
                          JOB_ACTION    => 'BEGIN
                                                UPDATE ....;
                                            END;',
                          ENABLED       => TRUE,
                          AUTO_DROP     => TRUE,
                          start_date    => sysdate + 1/24,
                          repeat_interval=>null
                          );

这段代码将创建一个作业,该作业将在创建后1小时内启动,然后删除