1、从MySQL5.1.6版本开始增加事件调度器(Event Scheduler),在使用这个功能之前必须确保event_scheduler已开启
1.1、开启event_scheduler,可使用以下方法
SET GLOBAL event_scheduler = 1; SET GLOBAL event_scheduler = ON; 在配置my.cnf文件 中加上 event_scheduler = 1
1.2、查看是否已开启事件调度器,可执行如下SQL:
SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; SHOW PROCESSLIST; SELECT * from mysql.event; SELECT * from information_schema.events;
2、CREATE EVENT 语法如下:
CREATE EVENT
[IF NOT EXISTS] --------------------------------------*语法1
event_name --------------------------------------------*语法2
ON SCHEDULE schedule ------------------------------*语法3
[ON COMPLETION [NOT] PRESERVE] --------------*语法4
[ENABLE | DISABLE] ----------------------------------*语法5
[COMMENT 'comment'] -------------------------------*语法6
DO sql_statement --------------------------------------*语法7
说明如下:
语法1、[IF NOT EXISTS]
使用IF NOT EXISTS,当event名称存在时不创建,只有名称不存在时才创建,建议不使用以保证event创建成功。
语法2、event_name
event名称,最大长度为64个字节且唯一。
语法3、ON SCHEDULE 计划任务,有两种设定计划任务的方式:
方式1:AT 时间戳,用来完成单次的计划任务;
时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。
方式2: EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务;
时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND
注: 其他的时间单位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建议使用这些不标准的时间单位。
语法4、[ON COMPLETION [NOT] PRESERVE]
ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。
而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。
语法5、[ENABLE | DISABLE]:参数Enable和Disable表示设定事件的状态(Enable:执行这个事件、Disable:不执行该事件)
可以用如下命令关闭或开启事件:ALTER EVENT event_name ENABLE/DISABLE
语法6、[COMMENT 'comment']
注释会出现在元数据中,它存储在information_schema表的COMMENT列,最大长度为64个字节。'comment'表示将注释内容放在单引号之间,建议使用注释以表达更全面的信息。
语法7、 DO sql_statement
DO sql_statement字段表示该event需要执行的SQL语句或存储过程。这里的SQL语句可以是复合语句,例如:
BEGIN
CREATE TABLE tab_name;//创建表
DROP TABLE tab_name;//删除表
CALL proc_name();//调用存储过程
END
使用BEGIN和END标识符将复合SQL语句按照执行顺序放在之间。当然SQL语句是有限制的,对它的限制跟函数Function和触发器Trigger 中对SQL语句的限制是一样的,
如果你在函数Function 和触发器Trigger 中不能使用某些SQL,同样的在EVENT中也不能使用。明确的来说有下面几个:
LOCK TABLES
UNLOCK TABLES
CREATE EVENT
ALTER EVENT
LOAD DATA
3、 执行逻辑
For (已建立事件each event that has been created)
If (事件的状态非DISABLE)
And (当前时间在ENDS时间之前)
And (当前时间在STARTS时间之后)
And (在上次执行后经过的时间)
And (没有被执行)
Then:
建立一个新的线程
传递事件的SQL语句给新的线程
(该线程在执行完毕后会自动关闭)
4、修改事件
使用ALTER EVENT 来修改事件,具体的ALTER语法如下,与创建事件的语法类似:
ALTER EVENT
event_name
ON SCHEDULE schedule
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement
5、 删除事件
EVENT使用DROP EVENT语句来删除已经创建的事件,语法如下:
DROP EVENT [IF EXISTS] event_name
6、 实例
-- 创建存储过程 DROP PROCEDURE prc_delete_sys_menu_name; CREATE PROCEDURE prc_delete_sys_menu_name() BEGIN delete from sys_menu_name; END; -- 测试 CALL prc_delete_sys_menu_name(); -- 创建Event -- 每隔10秒执行 DROP EVENT IF EXISTS eve_delete_sys_menu_name; CREATE EVENT IF NOT EXISTS eve_delete_sys_menu_name ON SCHEDULE EVERY 10 SECOND ON COMPLETION PRESERVE DO CALL prc_delete_sys_menu_name(); -- 设置开启event_scheduler SET GLOBAL event_scheduler = ON; -- 查看是否开启event_scheduler SHOW VARIABLES LIKE 'event_scheduler'; SELECT * from mysql.event;
相关推荐
Event即事件,也是一种数据库对象,又叫时间触发器或者事件调度器,与triggers的事件触发不同,tiggers会因为update、delete、insert等事件触发,而event类似与linux crontab计划任务,用于时间触发,当到了设定执行...
解决mysql failed to open table mysql.event
主要介绍了MySQL数据库Event定时执行任务
可在每天指定时间自动备份mysql数据库到指定目录,备份文件名称可显示备份时间,内附使用说明,傻瓜式操作。
mysql event脚本
本篇文章是对mysql中event的用法进行了详细的分析介绍,需要的朋友参考下
事件调度器是定时触发执行的,在这个角度上也可以称作是”临时的触发器”。触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句。事件是由一个特定的线程来管理的,也...
mysql event scheduler 使用详解,含全局设置、创建event、修改event、删除event及相应的example,测试环境 mysql ver 14.14 distrib 5.7.26
mysql自动定时备份脚本mysql自动定时备份脚本mysql自动定时备份脚本mysql自动定时备份脚本
定时从远程或本地服务器备份sql, 附件文件包括定时备份bat脚本,和计划任务的创建
SpringBoot定时任务实现Oracle和mysql数据同步
mysql自动定时备份脚本mysql自动定时备份脚本mysql自动定时备份脚本mysql自动定时备份脚本,配置点全备注了(容易,一定好用)
用于Linux系统下的mysql数据库定时备份
windows定时任务备份mysql数据库脚本
一、Mysql中event定时任务的相关命令, 1.查看event是否启用: SELECT @@event_scheduler; 或 SHOW VARIABLES LIKE 'event%'; 2.开启定时任务: set GLOBAL event_scheduler = 1; 或 SET GLOB
本软件Mysql定时备份器,目前为beta v1.0版(测试版),基于JAVA编写,运行时需JVM1.5版本以上支持.可以帮助windows环境下的mysql用户实现自动备份功能.分完全备份和增量备份,可立即执行和定期执行.点击'完全备份'和'增量...
实现mysql 每天定时自动给数据库表追加分区,包含存储计划和存储过程
生成sql文件备份和还原,经过本人测试,可以使用。实现定时功能
Mysql数据库定时备份,文档中提供了多种备份方式,有手动有自动,可以根据实际情况进行选择,希望对大家有帮助。