与Linux系统中的Cron类似,MySQL 也有一个 EVENTS 的定时调度任务,它使用一个叫作事件调度线程的独立线程来处理定时任务。黙认情况下在MySQL 版本小于8.0.3版本的EVENTS功能并未开启。所以,我们首先启用 EVENTS 定时任务:mysql> SET GLOBAL event_scheduler = ON;
举个例子:
假设您不再需要保存超过一个月的工资审计记录,您可以安排一个每天运行的事件,并从salary_audit表中删除一个月的记录。mysql> DROP EVENT IF EXISTS purge_salary_audit;
DELIMITER $$
CREATE EVENT IF NOT EXISTS purge_salary_audit
ON SCHEDULE EVERY 1 WEEK
STARTS CURRENT_DATE DO
BEGIN
DELETE FROM salary_audit WHERE date_modified < DATE_ADD(CURDATE(), INTERVAL -7 day);
END $$
DELIMITER ;
检查 EVENTS:
mysql> SHOW EVENTS\G
mysql> SHOW CREATE EVENT purge_salary_audit\G
启用或禁用某个事件:
mysql> ALTER EVENT purge_salary_audit DISABLE;
mysql> ALTER EVENT purge_salary_audit ENABLE;