MySQL新学知识(三)MySQL 事件(EVENT)

MySQL新学知识(三)MySQL 事件(EVENT)


前言

👨‍💻👨‍🌾📝记录学习成果,以便温故而知新

在Navicat上看到事件(EVENT)已经是很久以前了,但是使用事件还是最近的事,现在把一些学习所得记录一下。

所谓事件其实就事MySQL的定时任务。


一、创建事件

MySQL文档创建事件https://dev.mysql.com/doc/refman/8.4/en/create-event.html

语法如下:

CREATE

DEFINER = user

EVENT

IF NOT EXISTS

event_name

ON SCHEDULE schedule

ON COMPLETION \[NOT\] PRESERVE

ENABLE \| DISABLE \| DISABLE ON {REPLICA \| SLAVE}

COMMENT 'string'

DO event_body;

schedule: {

AT timestamp + INTERVAL interval ...

| EVERY interval

STARTS timestamp \[+ INTERVAL interval\] ...

ENDS timestamp \[+ INTERVAL interval\] ...

}

interval:

quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |

DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

语法看起来有点抽象,图形界面看起来比较直观一点。下图是Navicat创建事件的定义页,图中红字是语法中对应的。其中的event_body即事件体,也就是定时任务执行的内容需要注意,如果有多条语句需要执行,用BEGIN与END关键字括起来。

下图在Navicat中是计划页,对应语法中的"ON SCHEDULE",而schedule及计划有份AT与EVERY两种模式,即单次执行与循环执行

语法中的COMMENT对应的是注释页,文档中说注释64字符

二、启用事件

事件默认是不启用的,执行如下语句启用事件:

sql 复制代码
SET GLOBAL event_scheduler = ON;

启用后执行

sql 复制代码
SHOW PROCESSLIST;

如下图出现User为event_scheduler的行,说明启用成功。

执行如下语句停用事件:

sql 复制代码
SET GLOBAL event_scheduler = OFF;

执行后User为event_scheduler的行消失。

三、一个示例

sql 复制代码
CREATE DEFINER=`root`@`localhost` EVENT `EVENT_TEST` ON SCHEDULE EVERY 2 MINUTE STARTS '2026-10-18 15:13:50' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
	DECLARE v INTEGER;
	DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;

	SET v = 0;

	WHILE v < 5 DO
		INSERT INTO t1(num) VALUES (0);
		UPDATE t2 SET s1 = s1 + 1;
		SET v = v + 1;
	END WHILE;
END

Navicat对比

执行一次后效果:

表t1

表t2

执行第二次后结果:

表t1

表t2

看起来是实现预期。

MySQL的事件即定时任务还是有一定的便利性的。

相关推荐
星恒随风4 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
吴名氏.6 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
爱码少年6 小时前
Springboot下如何将CSV文件数据导入H2、Mysql数据库表
数据库·mysql·csv
2603_969694857 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea7 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
阿义有问题8 小时前
MySQL 迁移达梦全流程实战:DTS 七步图解 + 对象名全大写适配(附踩坑清单)
数据库
猫猫不是喵喵.11 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
lsc_blog12 小时前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
墨痕诉清风12 小时前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库
Ashe81315 小时前
MySQL 慢日志先别急着加索引:三个指标能拦掉大半误判
数据库