mysql能夠實現定時觸發功能,好比說定於某某時間mysql數據庫作什麼工做,或每隔多長時間作什麼工做。mysql
第二種狀況應用仍是比較廣的,好比說我但願天天檢查一下個人數據信息,超過一個月的無用信息清除以騰出空間供其餘存儲數據使用;或者相隔一段時間更新一下數據等等。sql
下面討論下這種狀況,給出一個例子供你們參考:數據庫
1.首先定義一個存儲過程取名爲e_test,注意豎線(「|」)必定不能丟事件
DELIMITER |event
DROP PROCEDURE IF EXISTS e_test |
CREATE PROCEDURE e_test()test
BEGIN
update order set status=1 where to_days(now())-TO_DAYS(date)>=1 and status=0;date
END定時器
|數據
假設有一個order表,而且表裏有一個status字段和一個date字段,如今將date中的時間距如今時間超過1天的而且狀態status=0的這條數據的狀態status改爲1。存儲過程
2.建立定時器取名爲event_test
SET GLOBAL event_scheduler = 1;
CREATE EVENT IF NOT EXISTS event_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
DO CALL e_test();
建立一個定時器,每間隔1秒觸發一次事件,即每一個一秒執行一次上面定義的e_test這個存儲過程。
3.這個是最簡單可是也是最重要的,咱們要手動的啓動這個定時器,要否則是無法工做的。
ALTER EVENT event_test ON
COMPLETION PRESERVE ENABLE;
最後提醒一點,建立存儲過程與建立定時器代碼要分開執行,不然會報錯,暫時還不知道爲何,我的覺得這個多是數據庫建立好存儲過程須要必定的緩衝 時間來作好準備,咱們要認爲的給他留出這個時間。固然這個時間對數據庫來講是必定的時間,可是對於咱們來講僅僅是眨眼之間的功夫,只要分開兩次執行時間就 足夠了。