1
我正在寻找一种MySql工作,让我解释我的问题。MySql工作或体面的永无止境的循环
基本上我有一个表(代表我的排队列表),这个表包含一个字段“动作”和一个字段“结束日期”。 “结束日期”代表我必须发起行动的时间。
我需要的是一个工作或无限循环,他经常检查“结束日期”字段,并且此字段的日期对应于实际日期,然后执行操作(SQL查询)。
希望你们能够给我一些提示;)
我正在寻找一种MySql工作,让我解释我的问题。MySql工作或体面的永无止境的循环
基本上我有一个表(代表我的排队列表),这个表包含一个字段“动作”和一个字段“结束日期”。 “结束日期”代表我必须发起行动的时间。
我需要的是一个工作或无限循环,他经常检查“结束日期”字段,并且此字段的日期对应于实际日期,然后执行操作(SQL查询)。
希望你们能够给我一些提示;)
我觉得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 ;
的问题是,我的表将只检查每5分钟,所以它不是“实时” ...... – Sindar 2012-01-06 20:24:38
这仅仅是一个例子。如果你喜欢,你可以把“每秒1次”。 – 2012-01-06 20:25:43
是的,但是如果我经常做这个,我的数据库会爆炸...... – Sindar 2012-01-06 20:40:12