2012-01-06 33 views
1

我正在尋找一種MySql工作,讓我解釋我的問題。MySql工作或體面的永無止境的循環

基本上我有一個表(代表我的排隊列表),這個表包含一個字段「動作」和一個字段「結束日期」。 「結束日期」代表我必須發起行動的時間。

我需要的是一個工作或無限循環,他經常檢查「結束日期」字段,並且此字段的日期對應於實際日期,然後執行操作(SQL查詢)。

希望你們能夠給我一些提示;)

回答

1

我覺得MySQL EVENT可用於這種目的。

例子:

delimiter $$ 

CREATE EVENT Every_5_minutes_e 
    ON SCHEDULE 
    EVERY 5 MINUTE 
    STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY  --- starting tomorrow 
    ENDS '2099-12-31 23:59:59'      --- ending in 2099 
    COMMENT 'Check queuing list and perform actions' 
    DO 
    BEGIN 
     DECLARE actionstatus_doingnow VARCHAR(255); 
     SET actionstatus_doingnow = CONCAT('Doing now ', NOW()) ; 

     UPDATE QueueingList      --- mark actions that will be done 
     SET ActionStatus = actionstatus_doingnow --- by this event 
     WHERE EndDatetime <= NOW() 
     AND ActionStatus = 'To Be Done' ; 

     ...          --- code for doing the actions 

     UPDATE QueueingList       --- mark actions as finished 
     SET ActionStatus = 'Done' 
     WHERE ActionStatus = actionstatus_doingnow ; 
    END $$ 

delimiter ; 
+0

的問題是,我的表將只檢查每5分鐘,所以它不是「實時」 ...... – Sindar 2012-01-06 20:24:38

+0

這僅僅是一個例子。如果你喜歡,你可以把「每秒1次」。 – 2012-01-06 20:25:43

+0

是的,但是如果我經常做這個,我的數據庫會爆炸...... – Sindar 2012-01-06 20:40:12