自动更新表日期和时间

时间:2014-08-19 18:32:25

标签: php mysql

假设我有一个与此类似的表(mysql):

id          int,
deadline    timestamp,
state       int

状态可以是1,2,3,4等.1:开放,2:待定,3:批准,4:关闭等。

截止日期有一个日期和时间,当它到达时,状态应该改变。例如,如果我插入以下记录:

插入表(id,截止日期,状态)值(1,'2014-08-21 2:05:13',1); (1表示开放)。

当达到截止日期时,状态应自动为2(待定)。

我怎么能这样做?

我想到了:

  • 创建一个应该每秒执行一次的进程来更新表,但在我看来,它会很重(cron)。此外,我的托管服务提供商不支持它。
  • 触发器,但不可能,因为它应该在截止日期之前更新,而不是在我插入或更新或删除表格时更新。
  • 从我的PHP代码处理不同的状态。任何时候请求状态,但是我在代码中的很多地方与状态一起工作,这将很复杂,很难保持。

如果您有任何想法,请告诉我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以创建一个使用case语句的View,如果它是1并且已过期,则将“state”列设为2,然后直接查询View而不是表。然后通过其他方法定期更新表,例如更新整个表的触发器(尽管这是随机的)。 。

或者您可以创建访问表的存储例程,而不是在应用程序代码中编写查询,并且存储的例程可以根据需要更新您的“状态”。