1. 启动 event_scheduler 在配置文件mysqld 标签后加上这行: event_scheduler=1 如果不想重启 mysql, 则再在 mysql 中执行 set global event_scheduler=1;2. 然后后创建定期执行的 EVENT 即可(下面是每分钟)(逻辑复杂建议写存储过程,在 Event 中直接调用存储过程) CREATE EVENT myevent ON SCHEDULE EVERY 1 MINUTE DO UPDATE A SET id = 1 WHERE c >= now() - interval 2 hour ;
#增加测试表及测试数据 drop table if exists a; create table if not exists a( id int primary key, c datetime not null, d int not null ); truncate table a; insert into a(id,c,d) values(1,now() -interval 3 hour,0); insert into a(id,c,d) values(2,now(),0); #开启事件 SET GLOBAL event_scheduler = ON; show variables like '%event_scheduler%'; #创建事件 禁用->删除->创建 #alter event `eventTest` disable; #如果有先禁用避免没有生效 drop event if exists `eventTest`; CREATE EVENT `eventTest` ON SCHEDULE EVERY '2' SECOND #测试成功后可改成 Hour DO update a set d=d+1 where c<now() - interval 2 hour; #具体的逻辑你自己根据需要来修改
在配置文件mysqld 标签后加上这行: event_scheduler=1
如果不想重启 mysql, 则再在 mysql 中执行
set global event_scheduler=1;2. 然后后创建定期执行的 EVENT 即可(下面是每分钟)(逻辑复杂建议写存储过程,在 Event 中直接调用存储过程)
CREATE EVENT myevent
ON SCHEDULE EVERY 1 MINUTE
DO
UPDATE A SET id = 1 WHERE c >= now() - interval 2 hour ;
drop table if exists a;
create table if not exists a(
id int primary key,
c datetime not null,
d int not null
);
truncate table a;
insert into a(id,c,d) values(1,now() -interval 3 hour,0);
insert into a(id,c,d) values(2,now(),0);
#开启事件
SET GLOBAL event_scheduler = ON;
show variables like '%event_scheduler%';
#创建事件 禁用->删除->创建
#alter event `eventTest` disable; #如果有先禁用避免没有生效
drop event if exists `eventTest`;
CREATE EVENT `eventTest`
ON SCHEDULE
EVERY '2' SECOND #测试成功后可改成 Hour
DO update a set d=d+1 where c<now() - interval 2 hour; #具体的逻辑你自己根据需要来修改