• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

三木筒子

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

固定时间刷新某个固定值 java

g刚开始想到的是用schedule去处理,写个表达式,然后加上@Schedule(cron="")去写,但是后来想想这样还是比较麻烦,然后就尝试了存储过程去写,

结果验证了我的想法,存储过程真的比写schedule简单

如下

1、要想保证能够执行event事件,就必须保证定时器是开启状态,默认为关闭状态

set GLOBAL event_scheduler = ON; 

2、要查看当前是否已开启事件调度器,可执行如下SQL:

SHOW VARIABLES LIKE 'event_scheduler

3、如果原来存在该名字的任务计划则先删除  

drop event if exist upload_to_sdmp;

4、工具中执行以下   ===========

# set time_zone = '+8:00'; 这行 为改变时间的sql,为了方便测试
set GLOBAL event_scheduler = 1;

-- 设置该事件使用或所属的数据库base数据库
use useCount;

# 如果原来存在该名字的任务计划则先删除
drop event if exists upload_user_count;

# 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ';' ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行
DELIMITER $$
# 创建计划任务,设置第一次执行时间为'2014-07-30 10:00:00',并且每天执行一次
create event upload_to_sdmp
on schedule every 1 day starts timestamp '2018-11-20 17:30:00'
#on schedule every 1 SECOND
do

# 开始该计划任务要做的事
begin


-- do something 编写你的计划任务要做的事
update userCount set count =count +1 ;

-- 结束计划任务
end $$

# 将语句分割符设置回 ';'
DELIMITER ;

5、事件存在后,需要开启事件,才能使事件(以上代码)生效

    1. ALTER EVENT upload_user_count ENABLE;  

 

 

6、测试完成后,关闭测试事件

    1. ALTER EVENT upload_user_count DISABLE;
       
       
       
       
7、附上事件状态检查sql
select * from mysql.event;
如有错误,请邮件zs253499660@sina.com,如有更好的方法,可以推荐

posted on 2018-11-20 17:36  森酱  阅读(248)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3