我是靠谱客的博主 落寞白云,最近开发中收集的这篇文章主要介绍MySQL事件的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

事件,像闹钟,每隔一段事件就会执行,循环执行的事件我把它理解成定时器

studyinfo表数据:

 

事件的创建

语法

# 语法
DELIMITER $
CREATE EVENT [IF NOT EXISTS] event_name 	# 创建事件[如果存在]
ON SCHEDULE SCHEDULE				        # 执行的时间和间隔
[ON COMPLETION (NOT) PRESERVE]			    # [是(否)循环执行]
[ENABLE | DISABLE | DISABLE ON SLAVE]		# [活动的事件(默认) | 关闭的事件 | 在从机中是关闭]
[COMMENT '注释']				            # [定义事件的注释]
DO BEGIN                                    # sql语句集开始
	[要执行的sql语句]                        # 定时执行的sql语句
END$                                        # sql语句集结束
DELIMITER ;

一些常用的时间间隔设置: 

# 一些常用的时间间隔设置:
# (1)每隔5秒钟执行
ON SCHEDULE EVERY 5 SECOND

# (2)每隔1分钟执行
ON SCHEDULE EVERY 1 MINUTE

# (3)每天凌晨1点执行
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)

# (4)每个月的第一天凌晨1点执行
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL 1 MONTH),INTERVAL 1 HOUR)

# (5)每 3 个月,从现在起一周后开始
ON SCHEDULE EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 1 WEEK

# (6)每十二个小时,从现在起三十分钟后开始,并于现在起四个星期后结束
ON SCHEDULE EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK

# 参数说明:

timestamp          # 表示一个具体的时间点,后面加上一个时间间隔,表示在这个时间间隔后事件发生。

EVERY子句       #  用于表示事件在指定时间区间内每隔多长时间发生一次,其中 SELECT子句用于指定开始时间;ENDS子句用于指定结束时间。

interval              #  表示一个从现在开始的时间,其值由一个数值和单位构成。例如,使用“4 WEEK”表示4周;使用“‘1:10’ HOUR_MINUTE”表示1小时10分钟。间隔的距离用DATE_ADD()函数来支配。

 

 创建事件

DELIMITER $
CREATE EVENT IF NOT EXISTS eve1		# 创建事件
ON SCHEDULE EVERY 5 SECOND 		    # 每隔5秒钟执行
ON COMPLETION PRESERVE			    # 循环执行
COMMENT '定时添加学生信息'		    # 注释
DO BEGIN				            # sql语句开始
	INSERT INTO studentInfo(student_name,create_time) VALUES('晴泪',NOW());
END$					            # sql语句结束
DELIMITER ;
# 过一会查询
SELECT * FROM studentinfo;

 

 

调度器的开关以及查看状态

# 开启事件调度器
SET GLOBAL event_scheduler = ON;
 
# 关闭事件调度器
SET GLOBAL event_scheduler = OFF;
 
# 查看事件调度器状态
SHOW VARIABLES LIKE 'event_scheduler';

 

事件的删除

#删除事件语法
DROP EVENT IF EXISTS 事件名;

修改事件

#修改事件
DELIMITER $
ALTER EVENT [IF NOT EXISTS] event_name		# 修改事件[如果存在]	
	ON SCHEDULE SCHEDULE			        # 执行的时间和间隔
	[ON COMPLETION [NOT] PRESERVE]		    # 循环执行
	[ENABLE | DISABLE | DISABLE ON SLAVE]	# [活动的事件(默认) | 关闭的事件 | 事件在从机中是关闭的]
	[COMMENT '注释']			            # [定义事件的注释]
	DO BEGIN				                # 要执行的sql语句集开始
		[要执行的sql语句]
	END$					                # 要执行的sql语句集结束
DELIMITER ;

事件的查询

#查询事件
SELECT * FROM information_schema.events; 

打卡第17天,欢迎对数据感兴趣的朋友一起讨论、交流,请多指教!

最后

以上就是落寞白云为你收集整理的MySQL事件的使用的全部内容,希望文章能够帮你解决MySQL事件的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部