1、事件
事件是一组SQL集合,简单说就是mysql中的定时器,时间到了就执行。
2、查看事件是否开启
事件由一个特殊的线程来管理,启用事件调度器后,拥有SUPER权限的账户执行
SHOW VARIABLES LIKE 'even_scheduler';
SELECT @even_scheduler;
SHOW PROCSSLIST;
3、开启事件
1、通过设置全局参数修改
SET GLOBAL event_scheduler = ON;
2、更改配置文件
在MySQL的配置文件my.ini中找到【mysqld】,然后添加如下代码开启事件
event_scheduler = ON;
4、创建事件
可以通过CREATE EVEVT语句创建事件
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;
比如在数据库中创建一个名为test的事件,用于每隔5秒钟向数据表table_name中插入一条数据
#打开数据库
use databases;
#创建tset事件
CREATE EVENT IF NOT EXISTS test ON SCHEDULE EVERY 5 SECOND
ON COMPLETION PRESERVE
DO INSERT INTO new_table(name,age,sex) VALUES("张帆",13,"男",NOW());
一些常用的时间间隔设置:
(1)、每隔5秒钟执行
ON SCHEDULE EVERY 5 SECOND
(2)、每隔1分钟执行
ON SCHEDULE EVERY 1 MINUTE
(3)、每天凌晨1点执行
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
(4)、每个月的第一天凌晨1点执行
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL 1 MONTH),INTERVAL 1 HOUR)
(5)、每 3 个月,从现在起一周后开始
ON SCHEDULE EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 1 WEEK
(6)、每十二个小时,从现在起三十分钟后开始,并于现在起四个星期后结束
ON SCHEDULE EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK
5、修改事件
使用ALTER EVENT语句修改其定义和相关属性
ALTER
[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;
修改test事件中插入数据的时间间隔
ALTER TABLE test ON SCHEDULE EVERY 30 SECOND
ON COMPLETION PRESERVE
DO INSERT INTO new_table(name,age,sex) VALUES("张帆",13,"男",NOW());