MySQL中的事件EVENT 是根据计划执行的一堆SQL代码,一个具体的例子就是
MySQL数据库定时删除一些过期的数据...
创建一个事件
DELIMITER $$ CREATE EVENT yearly_delete_stale_audit_rows ON SCHEDULE -- AT '2021-09-21' EVERY 1 YEAR STARTS '2019-01-01' ENDS '2029-01-01' DO BEGIN DELETE FROM payments_audit WHERE action_date < NOW() - INTERVAL 1 YEAR; END $$ DELIMITER ;
这段SQL的意思是:
创建一个事件 yearly_delete_stale_audit_rows
ON SCHEDULE 在事件调度器上,
EVERY 1 YEAR STARTS '2019-01-01' ENDS '2029-01-01' 从2019-01-01 到 2o29-01-01 每年执行一次
AT '2021-09-21'的意思是 在2021-09-21执行一次
DO BEGIN 开始
END $$ 结束
做了什么?
DELETE FROM payments_audit WHERE action_date < NOW() - INTERVAL 1 YEAR;
查看事件
SHWO EVENTS SHOW EVENTS LIKE 'yearly%'
更新事件
ALTER EVENT ... -- ALTER 与 CREATE 的语法完全一致
启用/禁用 事件
-- 启用 ALTER EVENT yearly_delete_stale_audit_rows ENABLE -- 禁用 ALTER EVENT yearly_delete_stale_audit_rows DISABLE
删除事件
DROP EVENT IF EXISTS yearly_delete_stale_audit_rows;