MYSQL利用事件和存储过程实现执行定时任务

比如有如下需求:删除某个表中当前时间距离日期字段(create_date) 大于8分钟的所有记录,每30s执行一次该操作。

1.创建存储过程test()

//删除ljh_test表中超过8分钟的记录

//date_add() 增加

//date_sub()减少

//month 月份 minute 分钟 second 秒

//例如:select DATE_ADD(NOW(),INTERVAL 1 MONTH); //一个月后的时间

 CREATE PROCEDURE test ()

  BEGIN

    delete from ljh_test WHERE create_date <= DATE_SUB(NOW(),INTERVAL 8 MINUTE);
  END;

2.创建事件e_test,每30秒执行test()存储过程

CREATE EVENT if not exists e_test
on schedule every 30 second
on completion preserve
do call test();

3.查看mysql中event_scheduler是否打开

show variables like ‘event_scheduler‘

如果在关闭状态,需要打开它

set global event_scheduler=1;

启动某事件任务

alter event e_test ON COMPLETION PRESERVE ENABLE;

关闭某事件任务

alter event e_test ON COMPLETION PRESERVE DISABLE;

删除某事件

drop EVENT e_test

删除某存储过程

drop PROCEDURE test

时间: 2024-12-23 18:12:21

MYSQL利用事件和存储过程实现执行定时任务的相关文章

mysql 创建事件、存储过程

CREATE PROCEDURE test1 () BEGIN INSERT INTO `user`(bookname) VALUES('asdf'); END; CREATE EVENT if not exists e_test on schedule every 30 second on completion preservedo call test1(); set global event_scheduler=1;alter event e_test ON COMPLETION PRESE

mysql存储过程动态执行SQL

CREATE PROCEDURE feeMonth(in fmark varchar(200),in fuser char(32),in ftime BIGINT,in fmonth char(6)) BEGIN #定义SQL变量 declare create_sql varchar(100); declare sel_sql varchar(100); declare del_sql varchar(100); declare fmon varchar(100); #定义表名变量 declar

MySQL创建事件调度器

MySQL中的事件调度器,可以用来执行定时任务. 一.开启 事件调度默认是关闭的,开启可执行. 查看事件调度器是否开启:     SHOW VARIABLES LIKE 'event_scheduler';   SELECT @@event_scheduler; 开启事件调度器 SET GLOBAL event_scheduler=1; SET GLOBAL event_scheduler=ON; 或者在my.ini文件中加上event_scheduler=1 或者在启动命令后加上"-event

mysql 通过事件定时为数据库创建动态表名

#检测事件是否开启 show variables like 'event_scheduler'; #开启事件(最好在my.init设置,因为重启后还会变回默认值OFF) set global event_scheduler = on; #创建事件(从11月24号开始每天执行一次) create EVENT eve_createTable ON SCHEDULE EVERY 1 DAY STARTS '2016-11-24 00:00:00' ON COMPLETION PRESERVE ENAB

Mysql数据库事件使用与示例

1 事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的"事件调度器". 事件和触发器类似,都是在某些事情发生的时候启动.当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的.由于他们彼此相似,所以事件也称为临时性触发器. 事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linu

mysql 启动事件 启动触发器功能

事件调度器有时也可称为临时触发器(temporal triggers), 因为事件调度器是基于特定时间周期触发来执行某些任务,而触发器(Triggers)是基于某个表所产生的事件触发的,区别也就在这里. 在使用这个功能之前必须确保event_scheduler已开启,可执行 开启: ①(开启事件触发器) SET GLOBAL event_scheduler = 1; 或我们可以在配置my.ini文件 中加上 event_scheduler = 1 ②或 SET GLOBAL event_sche

【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)

1   引言 Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程序比如fc-star管理端,sfrd(das),dorado都会用到触发器程序,实现对于数据库增.删.改引起事件的关联操作.本文介绍了触发器的类型和基本使用方法,讲述了触发器使用中容易产生的误区,从mysql源码中得到触发器执行顺序的结论,本文最后是实战遭遇的触发器经典案例.没有特殊说明时,本文的

事件冒泡的一些应用_利用事件冒泡处理多个事件[1]

在做项目时,有这样一个需求,需要点击Input显示隐藏下拉面板,从中选择内容填充入文本框. 最开始思路: (1)文本框与下拉面板作为一个整体,整体失去焦点后,隐藏下拉面板,不可行: (2)文本框正拥有焦点,此时点击面板,尝试先触发面板的点击事件再通过文本框的失去焦点事件 以上思路最终均不可行,原因: (1)div没有获取焦点之说,何来失去焦点: (2)文本框触发焦点事件总是会先执行,面板隐藏后无法再触发其点击事件: 最后解决思路:利用冒泡机制,将点击事件绑定在父容器中,如果有点击事件,判断tar

Flex中利用事件机制进行主程序与子窗体间参数传递

在开发具有子窗体,或者itemrenderer的应用时,常常涉及到子窗体向父窗体传递参数或者从itemrenderer内的控件向外部的主程序传递参数的需求.这些都可以通过事件机制这一统一方法加以解决.在我的应用中有两个需求: 1.左侧的List控件的itemrenderer中包含CheckBox控件,当其状态改变时需要同时改变主程序中的一个数组变量的内容:2.左下方的"新增届次"按钮会弹出一个窗口,窗口中输入届次信息后需要修改数据库中的表,同时表的更改结果要能够在List控件中体现出来