【问题标题】:Incrementing a field value over time in Oracle 12c在 Oracle 12c 中随时间增加字段值
【发布时间】:2018-02-01 11:09:03
【问题描述】:

我对数据库和 DBMS 相当陌生。我有一个表,其中有多个整数字段。 Number(3,0)

有没有办法使用 PL/SQL(自动)随着时间的推移增加(+1)这些字段中的每一个?

例如,我的表中有 TEST(Number(3,0)) 字段,我希望它的值每经过一小时就增加一。

谢谢!

【问题讨论】:

  • 在 999 小时后数值变得太大而超过 NUMBER(3,0) 时会发生什么?你想达到什么目的?为什么不直接使用 DATE 并在其中记录 SYSDATE 或 CURRENT_DATE,然后当您想知道已经过去了多少小时时,只需计算 SYSDATE/CURRENT_DATE 与字段值之间的小时差?
  • 这是一个小游戏,我希望每个用户每天/每小时在他们的帐户中获得一个额外的硬币

标签: sql oracle stored-procedures plsql oracle12c


【解决方案1】:

这是一个小游戏,我希望每个用户每天/每小时在他们的帐户中获得一个额外的硬币

你可以创建工作来做到这一点:

DBMS_SCHEDULER.create_job (
    job_name        => 'give_gold',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN UPDATE tab_name SET gold_val = gold_val+1; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'freq=hourly; byminute=0',
    end_date        => NULL,
    enabled         => TRUE,
    comments        => 'This job gives +1 gold every hour');

当然,您可以触发存储过程并进行复杂的计算。更多信息:DBMS_SCHEDULER

【讨论】:

  • 谢谢小伙子!这正是我想要的!
猜你喜欢
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多