1.创建定期删除的存储过程
CREATE PROCEDURE `storage_name` ( IN days_interval INT ) BEGIN
DELETE
FROM
conversation_count
WHERE
(
TO_DAYS(
NOW()) - TO_DAYS( create_time )) >= days_interval;
END
- storage_name 存储过程的名称; days_interval: 输入参数,类型是整数
BEGIN ... END
:这标志着存储过程的开始和结束。- TO_DAYS(NOW()) - TO_DAYS( create_time )) >= days_interval;当前时间减去创建时间大于等于输入参数就删除这条数据
2.调用存储过程
CALL `storage_name`(30);
- CALL MYSQL中执行存储过程的关键字
- storage_name 你需要调用的存储过程的名称
- 30 传递给存储过程(storage_name)的参数
3.启用事件调度
- 确认是否启动事件调度,默认是开启状态
SHOW VARIABLES LIKE 'event_scheduler';
- value显示ON就是启动,OFF就可以执行下面命令启动
SET GLOBAL event_scheduler = ON;
4.创建事件
- 创建新的事件,定期去执行存储过程或者SQL语句
CREATE EVENT delete_old_logs ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP DO
CALL MYSQL ( 30 );
- delete_old_logs是事件名称
- ON SCHEDULE EVERY 1 DAY STARTS 表示每天执行一次,当前时间开始
- DO CALL MYSQL (30) 指需要触发的存储过程,并传入30作为参数
5. 管理事件
- 事件创建完成,想查看事件
SHOW EVENTS;
- 需要删除事件
DROP EVENT IF EXISTS delete_old_logs;
- delete_old_logs替换成你需要删除事件的名称