zoukankan      html  css  js  c++  java
  • MySQL定时调用存储过程(事件的使用)

     设置一个定时任务:定时为test表中endtime中插入当前时间

    1、创建表

    -- 创建一个表test:字段endtime
    CREATE TABLE test (endtime DATETIME);

    2、创建存储过程

    -- 创建函数 test ():向test插入endtime=当前时间
    
    CREATE PROCEDURE test ()
    BEGIN
        INSERT INTO test
        SET endtime = now();
    END;

    注:运行上面的SQL之后生成以下存储过程,点击运行,可以验证该存储过程是否正确。

    3、创建事件

    -- 设置定时任务:每隔30分钟调用一次函数-test ()
    CREATE EVENT
    IF NOT EXISTS e_test ON SCHEDULE EVERY 30 SECOND ON COMPLETION PRESERVE DO
    CALL test ();

    注:运行上面的SQL之后生成以下事件,也可以使用工具直接生成。

     

    3、计划制定

     注:点击计划,可以查看和修改计划。图示表示:从2019-09-07 16:34:52开始,每个30秒,执行一次该事件。

      

     4、验证

    【1】验证存储过程

    查看test里面并没有每隔30秒插入一条数据,没有成功的话,先检查存储过程,结果是运行成功,那就是事件出了问题,后面检查事件。

    【2】验证事件状态

     查看事件的状态:disable,改为enable

     【3】验证事件计划(开启事件调度器)

     保存时发现定时任务报错:报”事件计划已关闭,事件只能在服务器启动并开启事件计划时才能处理”。接着去开启事件。

    -- 查看event是否开启
    
    SHOW VARIABLES LIKE '%event_sche%'; 

    -- 开启事件调度器
    set global event_scheduler =1;
    -- 或者
    set global event_scheduler=on; 

    注:运行上面sql后,再次查看,发现event_scheduler的结果为on

    去test刷新观察,发现每隔30秒在向test插入数据,说明事件调度成功。

    【4】关闭事件调度器

    后面如果不想继续添加,可以关闭事件调度器

    -- 关闭事件调度器
    set global event_scheduler =0;
    -- 或者
    set global event_scheduler=off;
  • 相关阅读:
    Hunspell介绍及试用
    语音活性检测器py-webrtcvad安装使用
    Nginx处理请求的11个阶段(agentzh的Nginx 教程学习记录)
    搭建rsync服务并同步重要数据
    语料库基础学习
    解决SSH远程执行命令找不到环境变量的问题
    Centos7上安装、破解bamboo6.0.3
    Java代码走查具体考察点
    Bamboo基础概念
    安装OpenResty开发环境
  • 原文地址:https://www.cnblogs.com/yybrhr/p/9605736.html
Copyright © 2011-2022 走看看