在定义的时间段后在数据库表中设置列

时间:2016-09-18 10:56:47

标签: php mysql sql datetime triggers

我有一个包含列的数据库表 - createactual。我需要一个触发器或其他解决方案的帮助,它会检查create列,如果超过1周,则自动将列actual设置为另一个值。我怎样才能做到这一点?非常感谢你。

2 个答案:

答案 0 :(得分:1)

解决此类问题的最佳方法是来更改数据库中的数据。相反,只需使用视图来正确计算实际值。

create view v_table as
    select t.*,
           (case when datediff(curdate(), created) >= 7 then 4
                 else old_actual
            end) as actual
    from table t;

然后,您可以通过视图访问该值。

如果您必须为一行执行此操作,则可以安排事件。但是,如果你最终得到一个忙碌的数据库,你最终会得到大量的预定事件,这些都会减慢服务器上的处理速度。

答案 1 :(得分:0)

谢谢,我创造了。你可以看:

    CREATE EVENT `archive` ON SCHEDULE EVERY 1 DAY STARTS '2016-09-18 13:34:07' ON COMPLETION NOT PRESERVE ENABLE COMMENT 'set actual' DO update results set actual = 4 where DATEDIFF(curdate(), created) >= 7;