我的表格包含以下属性name
,price
,start_date
,end_date
。此处start_date
和end_date
表示产品的价格从何时到何时存在的日期。 end_date
到期后,我需要该特定行的price
列为0.有什么方法可以实现相同的?数据库是MySQL,我使用PHP作为服务器端脚本。
答案 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;
如果使用视图访问表格,则列会自动调整为当前时间。否则,您需要安排一个事件来修改日期 - 当查询过期时,结束日期和时间之间必然存在延迟。