2012-01-06 34 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