mysql 定時任務執行

SET GLOBAL event_scheduler = ON;  

show variables like 'event_scheduler';  
 event_scheduler ON

建立event:sql

CREATE EVENT my_event   
  
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 SECOND   
  
DO  
    UPDATE tbl1 SET pic_count = pic_count + 10 WHERE uname = 'aaaa';

查看待執行event:code

show events

爲空說明已經執行完了。it

以上分爲三部分:event

1. create event
建立執行活動
2. on schedule
執行週期以及起始時間等
#schedule:  
    AT timestamp [+ INTERVAL interval] ... | EVERY interval    [STARTS timestamp [+ INTERVAL interval] ...][ENDS timestamp [+ INTERVAL interval] ...]
兩種:1.在某個時間點執行:at 某個時間點+某個時間長度:
        如上面的:AT CURRENT_TIMESTAMP + INTERVAL 10 SECOND 標識從如今起,10秒後執行;

      2.週期性執行:every 每間隔多長時間執行一次,從 某時間點開始,到某個時間點結束。

        從如今起每隔5秒修改數據,50秒後中止。
CREATE EVENT my_event2   
ON SCHEDULE EVERY 5 SECOND  
      ENDS CURRENT_TIMESTAMP + INTERVAL 50 SECOND  
DO  
    UPDATE t1   SET pic_count = pic_count + 2 WHERE uname = 'aaaa';

週期的具體單位值:class

interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

<3>doim

具體要執行的動做sql.數據

舉例:定時清理表c_amount 3天前的數據,5個小時10分鐘後啓動(第一次執行)。di

CREATE EVENT e_c_amount_delete_3_days_ago  
ON SCHEDULE EVERY 1 DAY  
        STARTS CURRENT_TIMESTAMP + INTERVAL '05:10' HOUR_MINUTE  
DO delete from c_amount where modify_time < DATE_SUB(CURDATE(),INTERVAL 3 DAY)

[2015-06-01]時間

相關文章
相關標籤/搜索