mysql__事件
来源:互联网 发布:老男孩网络 编辑:程序博客网 时间:2024/05/21 08:58
如何开启事件
在使用事件这个功能,首先要保证你的mysql的版本是5.1以上,然后还要查看你的mysql服务器上的事件是否开启。
1.查看事件是否开启,使用如下命令查看:
SHOW VARIABLES LIKE 'event_scheduler';SELECT @@event_scheduler;SHOW PROCESSLIST;
如果看到event_scheduler为on或者PROCESSLIST中显示有event_scheduler的信息说明就已经开启了事件。如果显示为off或者在PROCESSLIST中查看不到event_scheduler的信息,那么就说明事件没有开启,我们需要开启它。
开启mysql的事件,通过如下三种方式开启:
1.通过动态参数修改
更改完这个参数就立刻生效了
注意:还是要在my.cnf中添加event_scheduler=ON。因为如果没有添加的话,mysql重启事件又会回到原来的状态了。
SET GLOBAL event_scheduler = ON;
2.更改配置文件然后重启
在my.cnf中的[mysqld]部分添加如下内容,然后重启mysql。
event_scheduler=ON
3.通过制定事件参数启动
mysqld ... --event_scheduler=ON
Mysql事件的语法简介
1.创建事件的语法
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}
参数详细说明:
definer: 定义事件执行的时候检查权限的用户。
on schedule schedule: 定义执行的时间和时间间隔。
on completion [not] preserve: 定义事件是一次执行还是永久执行,默认为一次执行,即not preserve
enable | disable | disable on slave 定义事件创建以后是开启还是关闭,以及在从上关闭。如果是从服务器自动同步主上的创建事件的语句的话,会自动加上disable on slave。
coment ‘comment’: 定义事件的注释。
2.更改事件的语法
ALTER [DEFINER = { user | CURRENT_USER }] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] [DO event_body]
- 删除事件的语法
DROP EVENT [IF EXISTS] event_name
Mysql事件实战
- 测试环境
创建一个用于测试的test表:
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
2.实战1
- 创建一个每隔3秒往test表中插入一条数据的事件,代码如下:
create eventif not exists test on schedule every 3 second on completion preserve do insert into test (id, t1) values('', now());
- 创建一个10分钟后清空test表数据的事件
create event if not exists teston scheduleat current_timestamp + interval 10 minutedo truncate table test;
- 创建一个在2012-08-23 00:00:00时刻清空test表数据的事件,代码如下:
create event if not exists teston scheduleat timestamp '2012-08-23 00:00:00'do truncate table test;
- 创建一个从2012年8月22日21点45分开始到10分钟后结束,运行每隔3秒往test表中插入一条数据的事件,代码如下:
create event if not exists teston schedule every 3 secondstarts '2012-08-22 21:49:00' + interval 10 minuteon completion preservedo insert into test(id,t1) values('',now());
3.实战2
- 通过事件来定期的调用存储过程 创建一个让test表的id2字段每行加基数2的存储过程,存储过程代码如下:
drop procedure if exists test_adddelimiter $$create procedure test_add()begindeclare 1_id int default 1;declare 1_id2 int default 0;declare error_status int default 0;declare datas cursor for select id from test;open datas;fetch datas into 1_id;until error_statusend repeat;close datas;end $$
- 事件设置2012-08-22 00:00:00时刻开始运行,每天用一次存储过程,40天后结束,代码如下:
create event test on schedule every 1 daystarts '2012-08-22 00:00:00'ends '2012-08-22 00:00:00' + interval 40 dayon completion preserve docall test_add();
0 0
- mysql__事件
- mysql__基础01
- mysql__基础02
- mysql__事物隔离级别
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 事件
- 利用MAT分析内存泄露
- Thikphp实现的图片上传
- 抽象工厂模式——探索之旅
- 2015062306 - 张瑞敏:人不成熟的五个特征(3)
- 选择排序-for语句实现
- mysql__事件
- JAVA面向对像基础之——内部类
- Python:循环、条件判断
- Hibernate性能调优--集合属性的延迟加载
- 2015062307 - 张瑞敏:人不成熟的五个特征(4)
- MyEclipse纯键盘操作生成所有getter setter
- 对list进行排序
- 一起学编程(5--流程)
- PCIe INTx 学习笔记