Sql 一小时后执行触发器

Sql 一小时后执行触发器,sql,oracle,triggers,oracle10g,eventtrigger,Sql,Oracle,Triggers,Oracle10g,Eventtrigger,我正试图写一个触发器。要求是,每当ticket_表的ticket_status列有更新时,我需要在整整一小时后将列值从“工作”更改为“完成”。我不确定触发器是否是最好的方法。如果创建触发器是唯一的方法,需要一些建议-如果是,那么我们如何指定时间间隔来满足这样的要求?任何帮助都将不胜感激。谢谢 create or replace TRIGGER update_status_trigger after UPDATE of ticket_status ON ticketing_Table f

我正试图写一个触发器。要求是,每当ticket_表的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;

我会这样做

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小时内启动,然后删除

不,触发器不是执行此操作的方法。嗯……我的观点是相同的。但是我如何实现这个功能呢?我应该在我正在创建的触发器中引入类似睡眠的东西吗?创建一个Oracle作业。将计时器设置为每隔几分钟重复一次作业。在作业中,只需更新每个“工作”行的状态,日期早于1小时。单行从触发器使用DBMS_作业创建作业。这样做的好处是,如果原始更新未提交或回滚,作业也将回滚且不会执行。这是一个不错的选择。我早就想到了。但是我没有这个特权。我仍在想是否还有其他方法可以做到这一点。当然,我同意这是最好的办法。