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?;
?