需求是这样的:当系统时间达到某个值时(如进入2009年的瞬间), 自动更改表里的某个字段值。job 不能满足我的需要。它过几分钟就执行一次, 效率低, 更重要的是中间间隔时间内不起作用。要求是在时间到之后最多几秒内,触发一个事件。没触发器, 事件什么的也行啊。 我查了下, 诊断事件,等待事件,好像都不行。------------------------------------盼高手中...

解决方案 »

  1.   

    一种比较蠢的实现方式:
    浪费一个session,在这个session中跑一个死循环的procedure,每一定时间(1s/500ms,看需求)间隔去抓取sysdate,然后和你想要的时间作比较,符合条件就去update table(不要忘记处理transaction)。貌似oracle的事件都是动作触发型,没有时间触发型的另外,同楼上的,写在应用层似乎更好一点,比如在java中只要起一个thread监听时间就可以了,在oracle中却要牺牲一个session。
      

  2.   

    写在操作系统里,用sh或perl等调用sqlplus即可,比较好用
      

  3.   


    看样子是没什么好办法了。做点补充, 操作系统是win2003,数据库是9i