博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql中Event的一些测试
阅读量:6931 次
发布时间:2019-06-27

本文共 2776 字,大约阅读时间需要 9 分钟。

Mysql的event schedule可以让你设置你的mysql数据库在某个时间段执行你想要的动作

create event test1
on schedule every 1 day
starts '2007-09-01 12:00:00'
on completion not preserve
do insert into yyy values('hhh','uuu');
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年9月1日开始,每天对表yyy在12:00:00进行插入操作,并且只执行一次.
使用这个功能之前必须确保event_scheduler已开启,可执行
set global event_scheduler=1;
set global event_scheduler=on;
来开启,也可以直接在启动命令上加上--event_scheduler=1.例如:
mysqld...--event_scheduler=1
另外也可以直接在mysql.ini或者mysql.cnf中添加
event_scheduler=1
要查看当前是否已经开启时间调度器,可以执行如下sql:
show variables like 'event-scheduler';
或者
select @@event_scheduler;
或者show processlist;
二,创建时间(create event)
create event [if not exists] event_name
on 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}
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);
等待三秒,再执行查询看看:
mysql>select * from test.aaa;
就可以看到有三条数据存在
2)5天后清空aaa表:
create event e_test
on schedule at current_timestamp+interval 5 day
do truncate table test.aaa;
3)2007年7月20日12点整清空aaa表:
create event e_test
on schedule at timestamp '2007-07-20 12:00:00'
do truncate table test.aaa;
4)每天定时清空aaa表:---执行之后,是指每天当前创建时间执行该event
create event e_test
on schedule every 1 day
do truncate table test.aaa;
5)5天后开启每天定时清空aaa表:
create event e_test
on schedule every 1 day
starts current_timestamp +interval 5 day
do truncate table test.aaa;
6)每天定时清空aaa表,5天后停止执行:
create event e_test
on schedule every 1 day
ends current_timestamp + interval 5 day
do truncate table test.aaa;
7)5天后开启每天定时清空aaa表,一个月后停止执行
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;

三,修改事件(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)将每天清空aaa表修改成每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

另外当在my.ini或者my.cnf中添加了event_scheduler=1参数,那么在mysql启动之后,存在的event还是会继续运行.

 

转载于:https://www.cnblogs.com/Wison-Ho/p/3795239.html

你可能感兴趣的文章
为什么我说马云的“无人超市”会倒闭
查看>>
微信新增视频传输 互联通讯或迎二次革命
查看>>
tornado和subprocess实现程序的非堵塞异步处理
查看>>
Ubuntu 10.04 安装配置手记 (2010-05-06 13:50)
查看>>
VIEW层AJAX提交表单到Controller的实体(AJAX传递序列化的输入元素)
查看>>
[转] vsftpd文件配置
查看>>
第十三章: User Defaut
查看>>
表变量在存储过程或sql server中的运用
查看>>
【object-c基础】Object-c基础之一:#import,NSLog(),数据类型
查看>>
tablediff同步
查看>>
C#定义属性-只读属性
查看>>
小小聊天室
查看>>
几个不错的网站
查看>>
postmaster.c 中的 ListenAddresses
查看>>
.NET_.NET 发布(publish)网站_01-2
查看>>
文件处理
查看>>
c# 读写 xml
查看>>
使用<frameset><frame/><frame/></frameset> 布局页面 (div+css布局 和frameset布局,两种并列策略)...
查看>>
RDLC子报表
查看>>
2012-09-03 → 2012-09-09 周总结
查看>>