使用mysql事件定时执行岗位七天下线任务
最近做了一个招聘的项目,在项目中有一个定时下线的需求。在做之前我一直在考虑到底使用window 服务,还是使用调度,最终我选择使用mysql定时事件,因为这样简单方便。
思路:首先创建一个存储过程,通过游标遍历更新对应的岗位状态,让后在创建定时事件,废话不多说直接上代码
首先创建存储过程:
CREATE DEFINER = CURRENT_USER PROCEDURE `TimedDownLine`()
BEGIN
-- 声明变量(用于插入数据)
DECLARE PostID INT;#岗位ID
DECLARE DifferDay INT;#相差天数
DECLARE done INT DEFAULT ;#判断是否存在信息的依据0表示存在数据 DECLARE Integral_cursor cursor for SELECT id,TIMESTAMPDIFF(DAY, ReleaseEnd, now()) AS intervalday FROM postrelease WHERE PostType=;#查询所有在线的岗位信息(1表示在线岗位,2表示下线岗位) DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = ;#没有数据返回更改状态为1 -- 打开游标
OPEN Integral_cursor;
#开始循环
WHILE done= DO #REPEAT
#游标赋值(游标只会向下执行)
FETCH Integral_cursor INTO PostID,DifferDay;
IF(done=&&DifferDay>)
THEN UPDATE postrelease SET PostType= where ID=PostID;
end IF;
#循环结束
#UNTIL done= END REPEAT;
END WHILE;
SET done=;#更改状态,表示循环结束
-- 关闭游标
END
创建数据库事件:
#查看数据库事件是否开启
SHOW VARIABLES LIKE 'event_scheduler'
show variables like '%event%';
#设置当前事件开启
SET GLOBAL event_scheduler = ;
#查看定时任务
select * from mysql.event;
SELECT * FROM information_schema.events;
#每天凌晨开始执行
select DATE_ADD(DATE_ADD(CURDATE(), INTERVAL DAY), INTERVAL HOUR)
#关闭定时任务
DROP event temp_event; #每天凌晨开始执行(创建定时事件)
CREATE EVENT IF NOT EXISTS TimeDownlines_event
ON SCHEDULE EVERY DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL DAY), INTERVAL HOUR)
ON COMPLETION PRESERVE ENABLE #到点开启定时任务
DO CALL TimedDownLine();
这样只写对于一些业务相对于没有复杂的定时任务完全可以应对,而且开发快捷,下次有时间会把window 服务的定时任务写上。
使用mysql事件定时执行岗位七天下线任务的更多相关文章
- mysql创建定时执行存储过程任务
sql语法很多,是一门完整语言.这里仅仅实现一个功能,不做深入研究. 目标:定时更新表或者清空表. 案例:曾经做过定时清空位置信息表的任务.(然而,当时并未考虑服务器挂掉后的情况) 本次测试:每5s更 ...
- mysql创建定时执行存储过程任务实现订单定时关闭
CREATE PROCEDURE `tableName`.`procedureName`() LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECUR ...
- mysql事件定时
DELIMITER $$ MONTH STARTS '2013-01-07 11:20:00' ON COMPLETION PRESERVE ENABLE DO BEGIN CALL ps(); EN ...
- MySQL事件的先后
今天闲聊之时 提及MySQL事件的执行,发现一些自己之前没有注意的细节 如果在执行事件过程中,如果insert的存储过程发生意外 会如何 USE iot2; CREATE TABLE aaaa (ti ...
- mysql定时计划任务,ON COMPLETION [NOT] PRESERVE 当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而声明PRESERVE的作用是使事件在执行完毕后不会被Drop掉
当为on completion preserve 的时候,当event到期了,event会被disable,但是该event还是会存在当为on completion not preserve的时候,当 ...
- mysql命令行创建存储过程命令行定时执行sql语句
mysql -uroot -p show databases; use scm; show tables; show procedure status; 其他命令: SHOW VARIABLES LI ...
- MySQL定时执行脚本(计划任务)命令实例
在mysql中我们可以直接进行一些参数设置让它成定时为我们执行一些任务了,这个虽然可以使用windows或者linux中的计划任务实现,但是mysql本身也能完成 查看event是否开启 复制代码 代 ...
- mysql事件调度器定时删除binlog
MySQL5.1.6起Mysql增加了事件调度器(Event Scheduler),可以用做定时执行某些特定任务,来取代原先只能由Linux操作系统的计划任务来执行的工作MySQL的事件调度器可以精确 ...
- 定时备份 MySQL 并上传到七牛
多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份).mysqldump 全量逻辑备份. ...
随机推荐
- 沉默的螺旋--digest
孤立的恐惧对名望的追求高度的和谐和共识是大部分人的幸福感.安全感的源头公开性能让某种行为具有社会可接受性 P5谈论和沉默决定了意见气候那些被新的东方政策说服的人,感觉自己所想的都是合理的.因此他们就会 ...
- Scrapy 1.4 文档 02 安装指南
安装 Scrapy Scrapy 运行在 Python 2.7 和 Python 3.3 或更高版本上. 如果您使用的是 Anaconda 或 Miniconda,则可以从 conda-forge 通 ...
- Hibernate中cascade作用
Hibernate中cascade作用 只有“关系标记”才有cascade属性: 一个操作因级联cascade可能触发多个关联操作.前一个操作叫“主控操作”,后一个操作叫“关联操作”. cascade ...
- VMware12下CentOS 7安装教程
CentOS 7 DVD安装光盘(百度搜索CentOS即可找到官方主页):VMware Workstation 12 Pro及以上软件: 启动VMware Workstation 12 Pro程序,在 ...
- Java Script中常见操作
字符串常见操作:obj.length 长度obj.trim() 移除空白obj.trimLeft()obj.trimRight)obj.charAt(n) 返回字符串中的第n个字符obj.concat ...
- java8中stream的map和flatmap的理解
转自https://blog.csdn.net/wynjauu/article/details/78741093 假如我们有这样一个需求给定单词列表["Hello","W ...
- 用Excel导入Oracle数据库plsql
打开plsql之后,在工具栏点击[tools]--[ODBC Imoprter] 选择导入文件的类型,这里是excel文件,所以选择Excel Files 输入连接数据库的用户名和密码 点击Conne ...
- 【BZOJ 1002】: [FJOI2007]轮状病毒
题目大意:(略) 题解: 第一眼,这不是矩阵树裸体,看了看样例,心想3就有16,那100岂不是要上天…… 果然炸long long……emmmm该不会要打高精除吧……害怕,按照老师的话,不可能考高精除 ...
- 【NOIP模拟赛】随
题目链接: 172.18.111.252:800/problem.php?cid=1001&pid=0 题解: 膜达神……(NOIP考这个就等爆零吧……) 显然我们得到一个结论:$ans=\s ...
- 【prufer编码】BZOJ1430 小猴打架
Description 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打架之后,整个森 ...