mysql创建定时执行存储过程任务

  • 创建一个表

    DROP TABLE IF EXISTS `test_sche`;
    CREATE TABLE `test_sche` (   
    `id` int(11) NOT NULL,   
    `counts` int(11) DEFAULT NULL,   
    PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
    
    -- ---------------------------- 
    -- Records of test_sche -- 
    ---------------------------- 
    INSERT INTO `test_sche` VALUES ('1', '188');
    
  • 创建一个存储过程

    • 方式一
      CREATE DEFINER = `root` @`localhost` PROCEDURE `pro_add` () 
      BEGIN
      	#Routine body goes here...  
      	UPDATE test_sche SET counts=counts+1 WHERE id=1; 
      END
      
    • 方式二
      DROP PROCEDURE IF EXISTS pro_add;
      CREATE PROCEDURE pro_add () # 名称:pro_save_ap_manage_result_
         BEGIN # 开始
         -- --------------内容开始--------------------------
      		UPDATE test_sche SET counts=counts+1 WHERE id=1; #以';'结束
      		#多条语句
      		select now();#以';'结束
         -- --------------注意“;”内容结束--------------------------
         END; #结束
      

    注意:mysql默认的语句分隔符为 ;,命令行的方式创建存储过程的时候,可以根据需要先修改命令结束符,将分号改成其他的符号,如 $$ ,这样在后续的 create 到 end 间的代码都会看成是一条语句来执行,最后再将语句分割符设置回 ;

    delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ';' ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行
    
    CREATE PROCEDURE pro_add(IN p_in int)
    BEGIN # 开始
    
     UPDATE test_sche SET counts=counts+1 WHERE id=1; 
    
    END$$  # 结束
    
    DELIMITER ;   # 将语句的结束符号恢复为分号
    
  • 创建一个事件,并调用存储过程

    CREATE DEFINER = `root` @`localhost` EVENT `event_test_sche_` 
    ON SCHEDULE EVERY 5 SECOND STARTS '2016-07-12 22:11:50' # 5 秒执行一次 
    ON COMPLETION NOT PRESERVE ENABLE
    DO CALL `pro_add`
    
    DROP EVENT IF EXISTS event_test_sche_;
    CREATE EVENT `event_test_sche_`
    ON SCHEDULE EVERY 1 month STARTS '2016-10-01 00:00:00' # 每月1号执行
    ON COMPLETION NOT PRESERVE ENABLE
    DO CALL `pro_add`
    
  • 查看事件运行状态

    select * from mysql.event
    
  • 开启或者关闭事件

    ALTER EVENT event_test_sche_DISABLE;   
    ALTER EVENT event_test_sche_ENABLE;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讓丄帝愛伱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值