在何处以及如何为数据库列提供自动更新

时间:2016-01-20 03:26:23

标签: php mysql phpmyadmin

我的表格包含以下属性namepricestart_dateend_date。此处start_dateend_date表示产品的价格从何时到何时存在的日期。 end_date到期后,我需要该特定行的price列为0.有什么方法可以实现相同的?数据库是MySQL,我使用PHP作为服务器端脚本。

2 个答案:

答案 0 :(得分:0)

不,不是自动的。您必须通过执行如下所示的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 ;

答案 1 :(得分:0)

您可以使用视图执行此操作:

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

如果使用视图访问表格,则列会自动调整为当前时间。否则,您需要安排一个事件来修改日期 - 当查询过期时,结束日期和时间之间必然存在延迟。