1. 注意:5.1以后才支持!

      让MYSQL定期执行指定的一条命令。功能类似于crontab。

      1、 检查你的MYSQL是否开了这个功能

      SHOW VARIABLES LIKE 'event_scheduler';

      我执行了一遍发现记录为空说明我的MYSQL没有开呢。OK解决办法

      2、  打开你的MYSQL的计划任务功能

      使用这个功能之前必须确保event_scheduler已开启,可执行

      SET GLOBAL event_scheduler = 1;
      或SET GLOBAL event_scheduler = ON;
      来开启,也可以直接在启动命令加上 “–event_scheduler=1”,例如:mysqld ... --event_scheduler=1

      my.ini or my.cnf 中的
      [mysqld]
      添加 event_scheduler=ON

      二、创建事件(CREATE EVENT)
      先来看一下它的语法:

      CREATE EVENT [IF NOT EXISTS] event_name
        ON SCHEDULE schedule
        [ON COMPLETION [NOT] PRESERVE]
        [ENABLE | DISABLE]
        [COMMENT 'comment']
        DO sql_statement;

      schedule:
        AT TIMESTAMP [+ INTERVAL INTERVAL]
      | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

      INTERVAL:
        quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
                  WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
                  DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

      #单次计划任务: AT 时戳 
      #重复的计划任务 EVERY 时间(单位)的数量 时间单位 [STARTS 时戳][ENDS 时戳] 
      在两种计划任务中,时戳可以是任意的TIMESTAMP 和DATETIME 数据类型,要求提供的是将来的时间(大于CURRENT_TIMESTAMP),而且小于Unix时间的最后时间(等于或小于'2037-12-31 23:59:59') 
      时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND 
      3.[ON COMPLETION [NOT] PRESERVE] COMPLETION 当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而声明PRESERVE的作用是使事件在执行完毕后不会被Drop掉 
      4.[ENABLE|DESABLE] ENABLE  开启事件 DESABLE 关闭事件 
      5.COMMENT 注释 
      6.DO sql_statement 执行的sql语句

      1) 首先来看一个简单的例子来演示每秒插入一条记录到数据表

      USE test;
      CREATE TABLE aaa (timeline TIMESTAMP);
      CREATE EVENT e_test_insert
      ON SCHEDULE EVERY 1 SECOND 
      DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);
      等待3秒钟后,再执行查询看看:

      mysql> SELECT * FROM aaa;
      +---------------------+ 
      | timeline            | 
      +---------------------+ 
      | 2007-07-18 20:44:26 | 
      | 2007-07-18 20:44:27 | 
      | 2007-07-18 20:44:28 | 
      +---------------------+
      2) 5天后清空test表:

      CREATE EVENT e_test
      ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
      DO TRUNCATE TABLE test.aaa;
      3) 2007年7月20日12点整清空test表:

      CREATE EVENT e_test
      ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'
      DO TRUNCATE TABLE test.aaa;
      4) 每天定时清空test表:

      CREATE EVENT e_test
      ON SCHEDULE EVERY 1 DAY
      DO TRUNCATE TABLE test.aaa;
      5) 5天后开启每天定时清空test表:

      CREATE EVENT e_test
      ON SCHEDULE EVERY 1 DAY
      STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
      DO TRUNCATE TABLE test.aaa;
      6) 每天定时清空test表,5天后停止执行:

      CREATE EVENT e_test
      ON SCHEDULE EVERY 1 DAY
      ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
      DO TRUNCATE TABLE test.aaa;
      7) 5天后开启每天定时清空test表,一个月后停止执行:

      CREATE EVENT e_test
      ON SCHEDULE EVERY 1 DAY
      STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
      ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
      DO TRUNCATE TABLE test.aaa;
      [ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。
      8) 每天定时清空test表(只执行一次,任务完成后就终止该事件):

      CREATE EVENT e_test
      ON SCHEDULE EVERY 1 DAY
      ON COMPLETION NOT PRESERVE
      DO TRUNCATE TABLE test.aaa;
      [ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。
      [COMMENT ‘comment’]可以给该事件加上注释。

      三、修改事件(ALTER EVENT)
      ALTER EVENT event_name
        [ON SCHEDULE schedule]
        [RENAME TO new_event_name]
        [ON COMPLETION [NOT] PRESERVE]
        [COMMENT 'comment']
        [ENABLE | DISABLE]
        [DO sql_statement]
      1) 临时关闭事件

      ALTER EVENT e_test DISABLE;
      2) 开启事件

      ALTER EVENT e_test ENABLE;
      3) 将每天清空test表改为5天清空一次:

      ALTER EVENT e_test
      ON SCHEDULE EVERY 5 DAY;
      四、删除事件(DROP EVENT)
      语 法很简单,如下所示:

      DROP EVENT [IF EXISTS] event_name
      例如删除前面创建的e_test事件

      DROP EVENT e_test;
      当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS

      DROP EVENT IF EXISTS e_test;

      create event test
      ON SCHEDULE AT '2007-09-01 12:00:00' + INTERVAL 1 DAY
      on completion not preserve 
      do insert into yyy values('hhh','uuu');

      解释:从2007-09-01开始,每天对表yyy在12:00:00进行一个插入操作。而且只执行一次(on completion not preserve )

      我的计划任务为:

      create event sysplan
      ON SCHEDULE AT '2010-05-22 23:00:00' + INTERVAL 1 DAY
      on completion not preserve 
      do truncate table bjproj.ae_tmp;

      三、通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。  
      查看是否event_scheduler开启 mysql> SHOW VARIABLES LIKE '%event%'; 
      设置开启 mysql> SET GLOBAL event_scheduler=ON; 
      四、例子: 
      每分钟插入一条日志: DELIMITER // CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 MINUTE STARTS '2010-12-27 00:00:00'  ON COMPLETION NOT PRESERVE ENABLE DO  BEGIN  INSERT INTO log SET addtime=NOW(); END // 
      调用存储过程: DELIMITER // CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 DAY STARTS '2010-00-00 00:00:00'  ON COMPLETION NOT PRESERVE ENABLE DO  BEGIN         CALL user_log_prov(); END // 转http://blog.chinaunix.net/u2/84280/article_100139.html

详解 MySQL 的计划任务的更多相关文章

  1. MySQL存储过程详解 mysql 存储过程

    原文地址:MySQL存储过程详解  mysql 存储过程作者:王者佳暮 mysql存储过程详解 1.     存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...

  2. [深入学习Web安全](5)详解MySQL注射

    [深入学习Web安全](5)详解MySQL注射 0x00 目录 0x00 目录 0x01 MySQL注射的简单介绍 0x02 对于information_schema库的研究 0x03 注射第一步—— ...

  3. MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题

    MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...

  4. Mysql常用show命令,show variables like xxx 详解,mysql运行时参数

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 详细: http://dev.mysql.com/doc/ ...

  5. 【文章阅读】详解MySQL数据类型

    详解MySQL数据类型 - 五月的仓颉 - 博客园 http://www.cnblogs.com/xrq730/p/8446246.html 注:对于MySQL的数据类型做了详细的讲解,这是我看过的最 ...

  6. 详解Mysql分布式事务XA(跨数据库事务)

    详解Mysql分布式事务XA(跨数据库事务) 学习了:http://blog.csdn.net/soonfly/article/details/70677138 mysql执行XA事物的时候,mysq ...

  7. 详解MySQL索引

    原文链接详解MySQL索引 索引介绍 索引是帮助MySQL高效获取数据的数据结构.在数据之外,数据库系统还维护着一个用来查找数据的数据结构,这些数据结构指向着特定的数据,可以实现高级的查找算法. 本文 ...

  8. 详解MySQL中EXPLAIN解释命令

    Explain 结果解读与实践   基于 MySQL 5.0.67 ,存储引擎 MyISAM .   注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一 ...

  9. MySQL存储过程详解 mysql 存储过程(二)

    mysql存储过程详解 1.      存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...

随机推荐

  1. co-dialog弹出框组件-版本v2.0.1

    具体案例查看co-dialog:https://koringz.github.io/co-dialog/index.html 2.0.1版本优化项,代码压缩,修复PC和移动端自适应,修复显示弹出框浏览 ...

  2. Finite Encyclopedia of Integer Sequences(找规律)

    6617: Finite Encyclopedia of Integer Sequences 时间限制: 1 Sec  内存限制: 128 MB提交: 375  解决: 91[提交] [状态] [讨论 ...

  3. vue动画使用javascript钩子函数

    钩子函数从before-enter – enter –after-enter-entercancelled也是一个完整的生命周期 <transition   v-on:before-enter= ...

  4. nodejs fs路径

    引用:https://www.cnblogs.com/guangzhou11/p/7705257.html require()别的js文件的时候,将执行那个js文件. 注意: require()中的路 ...

  5. C/C++程序基础 (二)常用知识点

    使用宏实现max 注意括号在宏内的使用 #define MAX(x, y) ( ( (x) > (y) ) ? (x) : (y) ) 宏参数连接 a##e##b 转化为字符串 #a const ...

  6. 分享一个漂亮按钮插件FancyButtons

    一转眼,2018年的第10天就这样过去了.回看17年,曾经做了些啥都忘记了,就像每一天写日志时的样子(双手放在键盘上,怒着嘴,抬着头,望着天花板), 然后突然记得好像好久没有写随笔了(@_@).自从配 ...

  7. php+croppic.js实现剪切上传图片

    最近需要实现裁剪图片上传,想起之前公司用到的一个插件,却不知道叫什么名字了. 在网上找了有些时间,最终找到了这个网站. http://www.croppic.net/ 因为官网文档全部都是英文,所以看 ...

  8. 日志收集系统Flume及其应用

    Apache Flume概述 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume 支持定制各类数据发送方,用于收集各类型数据:同时,Fl ...

  9. May I see you again?【我可以再见到你吗?】

    May I see you again "May I see you again?" he asked. There was an endearing nervousness in ...

  10. Watchmen CodeForces - 650A

    Watchmen CodeForces - 650A Watchmen are in a danger and Doctor Manhattan together with his friend Da ...