我有一个命令表,我想将命令状态更改为“已过期”状态。如果这个状态在30分钟内没有变成其他东西
更新: 我希望每30分钟发生一次,我不能做任何事情。数据库更新自身并将任何命令的状态更改为“已过期”#39;如果此命令未在30分钟内处理
答案 0 :(得分:1)
不要这样做!而是使用视图或计算列。
因此,请保留最新的更新日期。这应该很简单,因为无论如何你都在修改表格。
然后,您可以将已过期计算为:
create view v_t as
select t.*,
(case when status_update_dt < CURRENT_DATETIME - interval '30 minute'
then 'expired'
else status
end) as new_status
from t;
当然,日期/时间函数取决于数据库(以上是ANSI语法)。并且,一些数据库支持计算列,这些列将定义直接放在表中。这非常方便,因为您不必更改数据;它只在您查询数据时有效。