插入和一段时间后更新列值

Posted

技术标签:

【中文标题】插入和一段时间后更新列值【英文标题】:update column value after insert and period of time 【发布时间】:2016-09-12 01:12:40 【问题描述】:

我有一个包含status的表,第一次插入时默认值为0,我想在24小时内插入此行后将此值从0更改为1,这意味着在插入24 hours 之后,状态值更改为1

使用 mysql。我该怎么做?

【问题讨论】:

为什么不插入时间戳? :) 【参考方案1】:

这可能不是正确的方法。我的意思是,您可以设置一个为每一行处理的事件,但这可能会给您的数据库增加大量负载。

相反,如果status 只是说该行的历史少于或多于一天,请将创建日期放入表中并使用视图:

create view v_table as
     select t.*, (creation_date >= date_sub(now(), interval 1 day) as status
     from table t;

如果status 可以通过其他方式更改,则将其命名为_status 并执行以下操作:

create view v_table as
     select t.*,
            (case when creation_date >= date_sub(now(), interval 1 day then 1 else _status end) as status
     from table t;

【讨论】:

以上是关于插入和一段时间后更新列值的主要内容,如果未能解决你的问题,请参考以下文章

WordPress 和 SQL - 如果列值不存在,则从另一个表更新和插入

插入后用主键更新表列(在一个语句中)

如何捕获更新列值并使用它?

linux脚本新加一行(插入变量的值,和一段字符)的问题?

SQL AFTER 插入更新触发器

Cassandra 在一些插入/更新后给出 TTransportException