
今天我们开始学习EVENT事件,今天的内容很少,生产中事件的使用度也不是很高。我们一起开始今天的学习吧。
本文摘录自小孩子4919《MySQL是怎样使用的:从零蛋开始学习MySQL》



事件
事件概念

使用事件
创建事件
创建事件的语法如下:
CREATE EVENT 事件名ON SCHEDULE{ AT 某个确定的时间点| EVERY 期望的时间间隔 [STARTS datetime][END datetime]}DOBEGIN 具体的语句END
事件的两种自动执行方式
1、在某个确定的时间点执行;
2、每隔一段时间执行一次。
CREATE TABLE `test_event` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `remark` VARCHAR(20) DEFAULT NULL, `create_time` TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB;

DELIMITER $$CREATE EVENT insert_test_eventON SCHEDULEAT '2021-10-12 14:20:54'DOBEGIN INSERT INTO test_event(id, remark, create_time) VALUES(NULL, 'GrowthDBA', NOW());END $$DELIMITER ;SHOW EVENTS;



DELIMITER $$CREATE EVENT insert_test_eventON SCHEDULEAT DATE_ADD(NOW(), INTERVAL 2 DAY)DOBEGIN INSERT INTO test_event(id, remark, create_time) VALUES(NULL, 'GrowthDBA', NOW());END $$DELIMITER ;
其中的DATE_ADD(NOW(), INTERVAL 2 DAY)表示该事件将在当前时间的两天后执行。大家感兴趣可以下来自己试一下。
2、我们再来创建一个每隔一段时间执行一次的事件:
DELIMITER $$CREATE EVENT insert_test_event_3sON SCHEDULEEVERY 3 SECONDDOBEGIN INSERT INTO test_event(id, remark, create_time) VALUES(NULL, 'GrowthDBA', NOW());END $$DELIMITER ;


DELIMITER $$CREATE EVENT insert_test_event_3sON SCHEDULEEVERY 3 SECOND STARTS '2021-10-13 00:00:00' ENDS '2021-10-13 23:59:59'DOBEGIN INSERT INTO test_event(id, remark, create_time) VALUES(NULL, 'GrowthDBA', NOW());END $$DELIMITER ;
如上所示,该事件将从'2021-10-13 00:00:00'开始直到'2021-10-13 23:59:59'为止,中间每隔3秒执行一次。在创建好事件之后我们就不用管了,到了指定时间,MySQL服务器会帮我们自动执行的。
每隔1分钟执行
ON SCHEDULE EVERY 1 MINUTE
每天凌晨1点执行
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
每个月的第1天凌晨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)
每3个月,从现在起1周后开始
ON SCHEDULE EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 1 WEEK
每12个小时,从现在起30分钟后开始,并于现在起4个星期后结束
ON SCHEDULE EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK
管理事件
查看当前数据库中定义的所有事件的语句:
SHOW EVENTS;SELECT * FROM information_schema.EVENTS;
查看某个具体的事件的定义:
SHOW CREATE EVENT 事件名;
删除事件:
DROP EVENT 事件名;
启动一个事件:
ALTER EVENT 事件名 ENABLE;
关闭一个事件:
ALTER EVENT 事件名 DISABLE;
SET GLOBAL event_scheduler = ON;

小结

end
文章转载自 GrowthDBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




