mysql中使用事件那么事件的线程应该是开启的,
查看开启线程的命令是: show processlist ;
event_scheduler开启事件才能执行的,如果没有开启
开启:set global event_scheduler = on;
关闭:set global event_scheduler = off;
线程开启了那么我们来操作事件。
新建一个表:下面事件的操作将围绕这个表进行哦。
create table test(
id int auto_increment primary key,
time datetime,
user varchar(50)
);
1、事件的创建
上一篇中的触发器是被动触发的,而事假是主动触发的。当一天结束可以使用事件清除当天的日志数据,可以使用事件来定时新增数据,事件有一次性的时间有循环的事件,事件是可以调用存储过程和函数的哦。
事件的格式是:中括号里面的是可选择的
CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name //event_name事件名称
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE] /*
当为on completion preserve 的时候,当eventd到期了,event会被disable,但是该event还是会存在
当为on completion not preserve的时候,当event到期的时候,该event会被自动删除掉.*/
[ENABLE | DISABLE | DISABLE ON SLAVE] //事件的状态,enable是默认的可以使用,disable和disable on slave是禁用
[COMMENT 'comment'] //增加注释
DO event_body; //event body 是执行的SQL语句或者调用存储过程等。
schedule时间表达式
AT timestamp //timestamp时间戳
[+ INTERVAL interval] ... |
EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval时间类型:
YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND
下面新增一个10秒钟自动新增一条数据的并且1分钟以后结束的事件,事件执行完就自动删除不保存。
create event twosecond
on schedule every 10 second
starts current_timestamp()
ends current_timestamp() + interval 1 minute
on completion not preserve
do
insert into test(time,user) values(now(),user());
等过了一分钟查询test表里面的数据:数据表里面新增了7条数据这个事件是正确执行了。
定时一个任务10秒以后删除id为44 的数据
create event test1
on schedule at current_timestamp + interval 10 second
do
delete from test where id = 44;
查询数据以后可以发现id为44 的数据已经被删除了
2、事件的修改
事件可以修改它的属性
每个属性都可以修改,其他的属性影响的
例如:ceshi事件的禁用
修改调度时间:
3、事件的删除
事件的删除:mysql表、存储过程、触发器删除都是一样的操作
drop event 事件名;
例如:
《………………………………………………菜鸟起飞中,请各位走过路过的多多指教……………………………………》