2016-11-10 90 views
-4

我有命令的表,我想更改为“已过期”命令的状态,如果这种状态并没有在30分钟如何在创建表格后更新表格中的列?

更新变成别的东西: 我希望这种情况发生,每30分钟,我不能做任何事情。数据库会自行更新,如果在30分钟内没有处理此命令,则将任何命令的状态更改为“已过期”

+3

'UPDATE key SET value =“expired”WHERE condition',就像我可以给你的尽可能多的你给我们的。投票结果太宽泛,完全缺乏背景。 –

+0

我删除了不兼容的数据库标签。请添加一个标签,指定您真正使用的数据库。 –

+0

你正在使用哪些DBMS?语法不会相同。没有一些表格定义和清晰度,目前不能回答。 –

回答

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

+0

我其实需要更改数据库;因为它会在一段时间之后被删除,就像临时表一样,可以找到restaus命令 – brahimm

+0

@brahimm。 。 。你的评论没有意义。 –

+0

好!我需要sql中的更新数据库的条件。 – brahimm