数据库实现
-- 1、打开调度(这样才会自动调用事件)
-- 查询方法(注意: -- 和查询之间有个空格,否则不能被识别为注释)
select @@event_scheduler
-- 设置方法(开启)
SET @@global.event_scheduler = ON;
-- 设置方法(关闭)
-- SET @@global.event_scheduler = OFF;
-- 2、创建一个存储过程
/*
DATE(发生时间): 是某个事件的日期部分
DATE(DATE_SUB(NOW(),INTERVAL 30 DAY)):从当前的日期减去2天
某一个事件比现在的日期减去30天还小,则说明需要删除了
*/
USE `bbs-pro`
DROP PROCEDURE IF EXISTS auto_del_30;
CREATE PROCEDURE auto_del_30()
BEGIN
DELETE FROM `user` WHERE DATE(deleteData)<=DATE(DATE_SUB(NOW(),INTERVAL 30 DAY)) and state=2;
END
-- 3、创建事件
CREATE EVENT IF NOT EXISTS `even_auto_del_30`
ON SCHEDULE EVERY 1 DAY STARTS '2022-01-10 01:00:00'
-- 从2022.1.10开始,每天删掉30天前的数据
ON COMPLETION PRESERVE DO CALL auto_del_30();
-- 4、显示事件:
select * from `bbs-pro`.event;
select * from information_schema.events
show processlist;
show variables like 'even_auto_del_30';
-- 查询事件
show variables like 'event_scheduler'
-- 打开事件
set global event_scheduler = on
select * from even_auto_del_30
-- 5、关闭even_auto_del_30事件
ALTER EVENT even_auto_del_30 ON COMPLETION PRESERVE DISABLE;
-- 6、开启even_auto_del_30事件:
ALTER EVENT even_auto_del_30 ON COMPLETION PRESERVE ENABLE;
user表关键信息
后端实现