Mysql 事件

作者: AsaGuo | 来源:发表于2019-07-01 15:50 被阅读0次

1. 检查数据库事件是否开启,event_scheduler=ON表示开启

SELECT @@event_scheduler;
SHOW VARIABLES LIKE 'event_scheduler';

2. 开启事件

  • 法1:
SET GLOBAL event_scheduler=1;
  • 法2:
SET GLOBAL event_scheduler=ON;
  • 法3:
在my.cnf中的[mysqld]部分添加 event_scheduler=ON,然后重启mysql。

3. 关闭事件

SET GLOBAL event_scheduler=OFF;

4. 事件语法

CREATE
        [DEFINER = { user | CURRENT_USER }]
        EVENT
        [IF NOT EXISTS]
        event_name
        ON SCHEDULE schedule
        [ON COMPLETION [NOT] PRESERVE]
        [ENABLE | DISABLE | DISABLE ON SLAVE]
        [COMMENT 'comment']
        DO event_body;
    schedule:
        AT timestamp [+ INTERVAL interval] ...
         | EVERY interval
        [STARTS timestamp [+ INTERVAL interval] ...]
        [ENDS timestamp [+ INTERVAL interval] ...]
    interval:
      quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
                  WEEK | SECOND | YEAR_MONTH | DAY_HOUR |
    DAY_MINUTE |DAY_SECOND | HOUR_MINUTE |
    HOUR_SECOND | MINUTE_SECOND}

5. 实例

5.1 创建表

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `t1` datetime DEFAULT NULL,
  `id2` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8

5.1 创建事件1:每隔3秒往test表中插入一条数据

CREATE EVENT IF NOT EXISTS e_test_1 ON SCHEDULE EVERY 3 SECOND
ON COMPLETION PRESERVE
DO INSERT INTO test(id,t1) VALUES(NULL,NOW());

5.2 创建事件2:10分钟后清空test表数据

CREATE EVENT IF NOT EXISTS e_test_2
ON SCHEDULE
AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO TRUNCATE TABLE test;

5.3 创建事件3:在事件中使用存储过程

CREATE EVENT IF NOT EXISTS e_test_3 ON SCHEDULE EVERY 3 SECOND
ON COMPLETION PRESERVE
DO CALL pro_test();
  • 创建存储过程
CREATE PROCEDURE pro_test()
    BEGIN
        INSERT INTO test(id,t1,id2) VALUES(NULL,NOW(),'1000000');
    END

相关文章

  • mysql查看事件是否开启,设置启动时自动开启方法

    1.查看事件是否开启 2.设置当前事件开启 3.设置事件在mysql启动时自动开启方法 我们先开启mysql事件,...

  • mysql event事件执行(navicate))

    参考链接 mysql事件每天执行一次_MySQL-事件https://blog.csdn.net/weixin_2...

  • MYSQL事件

    原文链接:https://www.bestqliang.com/#/article/8 1 事件简介 事件(eve...

  • MySQL 事件

    什么是事件 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因...

  • Mysql 事件

    1. 检查数据库事件是否开启,event_scheduler=ON表示开启 2. 开启事件 法1: 法2: 法3:...

  • mysql 事件调度event_scheduler

    mysql自身提供了定时调度的功能 开启关闭 MySQL事件调度器event_scheduler负责调用事件,它默...

  • MySQL的二进制日志(binlog)以及主从配置

    MySQL的二进制日志记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件。 1、binl...

  • MySQL常用语法

    存储过程PROCEDURE 函数FUNCTION 事件EVENT 备注:MYSQL默认是关闭事件机制的,需要自行开...

  • MySql 事件任务

    一、event 状态 查看event是否开启 开启event_scheduler 设置重启时事件还保持开启状态 w...

  • MongoDB 学习笔记

    MongoDB, MySQL和Redis的区别和使用场景 MySQL是关系型数据库,支持事件 MongoDB和Re...

网友评论

    本文标题:Mysql 事件

    本文链接:https://www.haomeiwen.com/subject/lmogcctx.html