在哪里以及如何给数据库列自动更新

在哪里以及如何给数据库列自动更新

问题描述:

我有一个表具有以下属性nameprice,start_date,end_date。这里start_dateend_date表示产品的价格从何时到何时存在的日期。在end_date到期后,我需要price列的特定行去0.有什么办法可以实现相同的?数据库是MySQL,我使用PHP作为服务器端脚本。在哪里以及如何给数据库列自动更新

不,不是自动的。您将不得不通过执行如下所示的UPDATE声明手动执行此操作。你可以和配置周期性作为SQL作业运行这个

update pricetbl 
set price = 0 
where end_date = now(); 

您可以也用于此目的的配置Event(样本)

delimiter | 

CREATE EVENT updatePrice_daily 
    ON SCHEDULE 
     EVERY 1 DAY 
    DO 
     BEGIN 
     UPDATE pricetbl SET price = 0 WHERE end_date = NOW(); 
     END | 

delimiter ; 

您可以使用视图做到这一点:

create view v_pricetbl as 
    select (case when end_date > now() then 0 else price end) as price, 
      start_date, end_date 
    from atable; 

如果您使用视图访问表格,则该列会自动调整为当前时间。否则,您需要安排一个事件来修改日期 - 并且在查询过期时,结束日期和时间之间肯定会有滞后。