Mysql的Event

Event简介

Event是mysql中的一个事件,和触发器类似,触发器是在某条sql语句执行后可能会触发,而Event是每隔一段时间或某个特定的时间点执行,可以精确到秒。

准备

在创建Event前,需要将mysql中的event_scheduler属性设置为ON。

使用命令

mysql> show variables like "%event_scheduler%";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | OFF   |
+-----------------+-------+
1 row in set (0.19 sec)

mysql> set global event_scheduler = on;
Query OK, 0 rows affected (0.04 sec)

mysql> show variables like "%event_scheduler%";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON   |
+-----------------+-------+
1 row in set (0.06 sec)

创建Event

语法格式

create event event_name on schedule
[at time][every interval]
do event_body;

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

示例:每1分钟在ADMIN表中插入一条数据。

首先创建一个存储过程

delimiter //
create procedure aminute(in in_id int)
begin
insert into ADMIN(id,user_id,traveldate,fee,days)  values(in_id,@@hostname,now(),100,10);
end//
delimiter;

然后创建一个Event

create event insert_minute
on schedule
every 1 minute
do call aminute(floor(rand()*10000000+1));

运行结果

查看Event

查看当前database的Event

mysql> show events;
+-----+---------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| Db  | Name          | Definer | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends | Status  | Originator | character_set_client | collation_connection | Database Collation |
+-----+---------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| DB1 | insert_minute | root@%  | SYSTEM    | RECURRING | NULL       | 1              | MINUTE         | 2019-11-26 10:32:58 | NULL | ENABLED |          1 | utf8mb4              | utf8mb4_general_ci   | utf8_general_ci    |
+-----+---------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
1 row in set (0.73 sec)

mysql> 

修改Event

使用Alter命令

alter event event_name on schedule
[at time][every interval][rename to newname]
do event_body;

比如,将上面的示例修改为每秒插入一条,并修改Event的名称

alter event insert_minute on schedule every 1 second rename to insert_second do call aminute(floor(rand()*10000000+1));

运行结果

删除Event

使用drop命令

drop event event_name;

示例:

mysql> show events;
+-----+---------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| Db  | Name          | Definer | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends | Status  | Originator | character_set_client | collation_connection | Database Collation |
+-----+---------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| DB1 | insert_second | root@%  | SYSTEM    | RECURRING | NULL       | 1              | SECOND         | 2019-11-26 10:49:20 | NULL | ENABLED |          1 | utf8mb4              | utf8mb4_general_ci   | utf8_general_ci    |
+-----+---------------+---------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
1 row in set (0.15 sec)

mysql> drop event insert_second;
Query OK, 0 rows affected (0.09 sec)

mysql> show events;
Empty set

最新文章

  1. CentOS 6.5 下 CDH 5.2.1 集群安装(一)
  2. JS获取当前浏览器的类型
  3. jQuery事件绑定.on()简要概述及应用
  4. Hinet 日本数据处理流程
  5. matlab微分方程dsolve使用
  6. ios app架构设计系统文章
  7. json串转对象
  8. 【转】MySQL Temporary Table相关问题的探究
  9. button改变背景与文字颜色
  10. HDU5730 FFT+CDQ分治
  11. Open Phone, SMS, Email, Skype and Browser apps of Android in Unity3d
  12. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 list_should_have_no_selections(self, locator)
  13. CCCallFuncN误用导致引用计数循环引用
  14. 清楚float浮动的四种方法
  15. JVM GC算法
  16. page0902未完成
  17. Jenkins可持续集成项目搭建——配置邮件
  18. 学习react
  19. Excel中的常用功能
  20. ubuntu16。04LST配置nfs实现服务器和客户端共享文件

热门文章

  1. Arcpy里莫名其妙的字段类型(Field type)
  2. Python之在字符串中处理html和xml
  3. Html5介绍及新增标签
  4. ssh-keyscan - 收集 ssh 公钥
  5. shell script 二 判断符号【】 shift 偏移量 if then fi
  6. oracle number 类型 只显示10位精度
  7. centos 单用户登陆模式操作
  8. Postman Interceptor安装成功却无法在Postman启用的解决办法
  9. 【leetcode】959. Regions Cut By Slashes
  10. leetcode-162周赛-1252-奇数值单元格数目