读书人

Mysql定时任务(定时实施操作)

发布时间: 2012-09-14 11:53:44 作者: rapoo

Mysql定时任务(定时执行操作)

Mysql属于中小型数据库系统,它的事件调度器Event Scheduler是在mysql 5.1才开始引入
事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,
取代部分原先只能用操作系统任务调度器才能完成的定时功能。事件调度器是定时触发执行的,
在这个角度上也可以称作是"临时的触发器"。触发器只是针对某个表产生的事件执行一些语句,
而事件调度器则是在某一个(间隔)时间执行一些语句。事件是由一个特定的线程来管理的,

也就是所谓的"事件调度器"。

代码DELIMITER?$$

DROP?PROCEDURE?IF?EXISTS?`mystock`.`TEST_KKK`$$

CREATE?PROCEDURE?`mystock`.`TEST_KKK`()
????/*LANGUAGE?SQL
????|?[NOT]?DETERMINISTIC
????|?{?CONTAINS?SQL?|?NO?SQL?|?READS?SQL?DATA?|?MODIFIES?SQL?DATA?}
????|?SQL?SECURITY?{?DEFINER?|?INVOKER?}
????|?COMMENT?'string'*/
????BEGIN
????DECLARE?NUM?INTEGER?DEFAULT?0;

????DECLARE?$A?INT;

????SELECT?(20-COUNT(STOCK_CODE))?as?number?into?NUM?FROM?get_stock_list?WHERE?FLAG?=?0?AND?STIME?=?curdate();

????IF?NUM>0?THEN

????PREPARE?STMP?FROM?'INSERT?INTO?get_stock_list?(stock_code,stock_name,close,raises,stime)?select?stock_code,stock_name,close,result1,selectd?from?choice_stock??where?stock_code??not?in?(select?stock_code?from?get_stock_list?where?stime?=?curdate()?and?flag?=?0)?and?selectd?=?curdate()?and?selectd?=?curdate()?order?by?id?limit??'?;

????SET?@A?=?NUM;

????EXECUTE?STMP?USING?@A;

????END?IF;
????END$$

DELIMITER?;

?

?

代码DELIMITER?$$

DROP?FUNCTION?IF?EXISTS?`mystock`.`FUNCTION_ADD_STOCK_FOR20`$$

CREATE?DEFINER=`root`@`localhost`?FUNCTION?`FUNCTION_ADD_STOCK_FOR20`()?RETURNS?int(11)
BEGIN
????DECLARE?NUM,ANOTHER?INTEGER;
????SELECT?COUNT(STOCK_CODE)?as?number?into?NUM?FROM?get_stock_list?WHERE?FLAG?=?0?AND?STIME?=?curdate();
????if(NUM<20)
????THEN?
????????SET?ANOTHER?=?20?-?NUM;
????????INSERT?INTO?get_stock_list?(stock_code,stock_name,close,raises,stime)?select?stock_code,stock_name,close,result1,selectd?from?choice_stock?where?stock_code??not?in?(select?stock_code?from?get_stock_list?where?stime?=?curdate()?and?flag?=?0)?order?by?id?LIMIT?10;
????END?IF;
????RETURN?NUM;
????END$$

DELIMITER?;

?

读书人网 >Mysql

热点推荐