Mysql event事件用法

公司的数据库需要进行定期删除数据,需要用到mysql event事件,学习和梳理这块知识。

1查看event是否开启
SHOW VARIABLES LIKE 'event_scheduler';

2开启event
SET GLOBAL event_scheduler = 1; 

3查看所有的event
select * from mysql.event \G

4删除event
drop event event_name

5语法:
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}

参数解析
event_name:事件的名称
schedule:事件触发点,【AT timestamp】一般用于只执行一次,一般使用时可以使用当前时间加上延后的一段时间,例如:AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR。也可以定义一个时间常量,例如:AT '2006-02-10 23:59:00';【EVERY interval】一般用于周期性执行,可以设定开始时间和结束时间。
ON COMPLETION [NOT] PRESERVE:默认是执行完之后会自动删除。如果想保留该事件使用ON COMPLETION PRESERVE,使用select查询语句可以查询到;如果不想保留也可以设置ON COMPLETION [NOT] PRESERVE。
ENABLE | DISABLE:设置启用或者禁止这个事件。
COMMENT:增加注释。

6案例:
创建一个test表,只有一个字段data类型 名为time的字段
每间隔5秒钟在表格table中输入一条数据。
delimiter |
CREATE EVENT test1
ON SCHEDULE every 5 second
ON COMPLETION PRESERVE
DO BEGIN
insert into test(time) values(now());
END |
delimiter ;
每间隔20秒删除表格中的数据
delimiter |
CREATE EVENT test2
ON SCHEDULE EVERY 20 second
ON COMPLETION PRESERVE
DO BEGIN
delete from test;
END |
delimiter ;

delimiter | 将语句的结束标志符换为|,最后再换为;

猜你喜欢

转载自www.cnblogs.com/ww11/p/8966371.html