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