2016-01-20 80 views
0

我有一個表具有以下屬性nameprice,start_date,end_date。這裏start_dateend_date表示產品的價格從何時到何時存在的日期。在end_date到期後,我需要price列的特定行去0.有什麼辦法可以實現相同的?數據庫是MySQL,我使用PHP作爲服務器端腳本。在哪裏以及如何給數據庫列自動更新

回答

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 ; 
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; 

如果您使用視圖訪問表格,則該列會自動調整爲當前時間。否則,您需要安排一個事件來修改日期 - 並且在查詢過期時,結束日期和時間之間肯定會有滯後。

相關問題