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

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

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

代码
/* 开启event_scheduler,也可以设置为on */
set  global event_scheduler  = 1 ;
/* 创建简单的任务,每分钟执行一次,从一个表取数据插入到另一个表,也可以定时取,可以参看下面文档,此处为简单例子 */
CREATE  EVENT MyEvent
ON  SCHEDULE EVERY  1  MINUTE 
DO
INSERT   INTO  list_test (字段1,字段1,字段1,字段1,字段1)  select  字段1,字段1,字段1,字段1,字段1  from  表2  where  id   =   510 ;
/*每天固定时间执行*/
CREATE EVENT EVENT_ADD_FOR20_ENOUGH
ON SCHEDULE EVERY 1 DAY
STARTS TIMESTAMP '2009-12-18 02:58:00'/×MYSQL注意时区设置,默认非中国时区×/
DO
SQL语句

/Files/pochonlee/MySQL-Events-CN.rar

再加两段吧

代码
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 ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值