如何在创建表后更新表中的列?

时间:2016-11-10 19:42:56

标签: mysql

我有一个命令表,我想将命令状态更改为“已过期”状态。如果这个状态在30分钟内没有变成其他东西

更新: 我希望每30分钟发生一次,我不能做任何事情。数据库更新自身并将任何命令的状态更改为“已过期”#39;如果此命令未在30分钟内处理

1 个答案:

答案 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语法)。并且,一些数据库支持计算列,这些列将定义直接放在表中。这非常方便,因为您不必更改数据;它只在您查询数据时有效。