我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL事件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL事件


MySQL事件(event)是根据指定时间表执行的任务,称为计划事件。事件包含一个或多个SQL语句的对象。一个事件可调用一次,也可周期性的启动。因为它们是由时间触发的,所以MySQL事件也称为时间触发器

事件和触发器相似,都是在某些事情发生的时候启动,因此事件也可称为临时触发器

  • 事件:基于特定时间周期触发来执行某些任务
  • 触发器:基于某个表所产生的

MySQL事件由一个特定的线程来管理的,也就是所谓的事件调度器

事件调度器可以在指定的时刻执行某些特定的任务,并以此可取代原先只能由操作系统的计划任务来执行的工作。这些在指定时刻才能被执行的任务就是事件,这些任务通常是一些确定的SQL语句集合。

事件由一个特定的线程来管理。启用事件调度器后,拥有SUPER权限的账户执行SHOW PROCESSLIST就可以看到这个线程了。

事件调度核心参数:event_scheduler

查询事件调度状态

以下几种方式都可以

方式1:

SHOW VARIABLES LIKE 'event_scheduler';

在这里插入图片描述

方式2:

SELECT @@event_scheduler;

在这里插入图片描述

方式3:

SHOW processlist;

在这里插入图片描述

  • event_scheduler=NO说明已经开启了,event_scheduler=OFF设没开启
  • processlist命令查看得到event_scheduler的信息,则说明已经开启,否则没开启

开关事件调度(临时)

1. 开启事件调度(临时)
以下任意命令都可以,该配置只是临时生效,重启后失效。

SET GLOBAL event_scheduler = ON;SET @@global.event_scheduler = ON;SET GLOBAL event_scheduler = 1;SET @@global.event_scheduler = 1;

2. 关闭事件调度(临时)
以下任意命令都可以,该配置只是临时生效,重启后失效。

SET GLOBAL event_scheduler = OFF;SET @@global.event_scheduler = OFF;SET GLOBAL event_scheduler = 0;SET @@global.event_scheduler = 0;

开关事件调度(永久)

上面的方式都只是临时生效,重启MySQL就会恢复之前状态。要想永久生效需要在配置文件(my.ini)中配置参数。

event_scheduler = 1 #开启事件event_scheduler = 0 #关闭事件

MySQL8.0版本event_scheduler默认是1。

创建事件

语法:

CREATE [DEFINER = {USER | CURRENT_USER}] EVENT [IF NOT EXISTS] event_nameON SCHEDULE schedule[ON COMPLETION [NOT] PRESERVE][ENABLE | DISABLE | DISABLE ON SLAVE][COMMENT 'comment']DO event_body;

示例:

CREATE DEFINER = `root`@`%` EVENT IF NOT EXISTS event1ON SCHEDULE EVERY 1 MONTH STARTS '2023-01-20 00:00:00' ENDS '2025-01-20 00:00:00'ON COMPLETION PRESERVEENABLECOMMENT '测试事件1'DO BEGININSERT INTO table1 (`id`) VALUES (12);END;

语法子句分析

子句是否必选描述
DEFINER可选定义事件执行时检查权限的用户
IF NOT EXISTS可选判断要创建的事件是否存在
EVENT event_name必选指定事件名称
ON SCHEDULE schedule必选定义执行计划(执行的时间和时间间隔)

schedule:具体的执行计划规则
ON COMPLETION [NOT] PRESERVE可选定义事件是否循环执行

指定事件一次执行还是永久执行,默认NOT PRESERVE:一次执行
ENABLE | DISABLE | DISABLE ON SLAVE可选指定事件是否开启,默认ENABLE

ENABLE:开启
DISABLE:关闭
DISABLE ON SLAVE:从库中关闭
COMMENT ‘comment’可选定义事件的注释

comment:注释内容
DO event_body必选指定事件启动时所要执行的事件主体代码

可以是任何有效的SQL语句、存储过程或者一个计划执行的事件。如果包含多条语句,则可以使用 BEGIN…END 复合结构

event_body:执行的代码

执行计划子句

语法:ON SCHEDULE schedule

  • schedule:具体的执行计划规则

1. 一次性事件
语法:AT timestamp [+ INTERVAL]

某一时间执行一次

ON SCHEDULE AT '2023-02-01 00:00:00'ON SCHEDULE AT '2023-02-01 00:00:00' + INTERVAL 1 DAY

2. 重复性事件
语法:EVERY interval STARTS timestamp [+INTERVAL] [ENDS timestamp [+INTERVAL]]

在开始结束时间范围内,每间隔指定时间就执行一次

EVERY 1 MONTH STARTS '2023-01-20 00:00:00' ENDS '2025-01-20 00:00:00'EVERY 1 MONTH STARTS '2023-01-20 00:00:00' + INTERVAL 1 DAY ENDS '2025-01-20 00:00:00' + INTERVAL 1 DAY

结束时间可以不指定,但开始时间必须指定。

事件主体子句

语法:DO event_body

指定事件启动时所要执行的事件主体代码。

  • event_body:执行的代码

可以是任何有效的SQL语句、存储过程或者一个计划执行的事件。如果包含多条语句,则可以使用 BEGIN…END 复合结构。

DO INSERT INSERT INTO time_table (`id`) VALUES (12)

查询事件

1. 当前数据库所有事件信息

show events;

条件筛选

show events like '%event_name%';

2. 指定数据库所有事件信息

show events from demo;

条件筛选

show events from demo WHERE name like 'event_name';

从events表直接查询事件信息

select * from information_schema.events where EVENT_SCHEMA='demo' and EVENT_NAME='event_name';

修改事件

1. 启用禁用事件

--开启事件alter event event_name enable;--关闭事件alter event event_name disable; 

2. 修改执行计划

ALTER EVENT event_name ON SCHEDULE schedule;

3. 修改事件主体

ALTER EVENT event_name DO event_body;

4. 重命名事件

ALTER EVENT event_name RENAME TO new_event_name;

5. 移动事件到其他数据库
可修改事件名称

ALTER EVENT demo.event_name RENAME TO test.event_name;

删除事件

drop event event_name;

来源地址:https://blog.csdn.net/JokerLJG/article/details/128701993

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL事件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL事件

文章目录 事件介绍事件调度查询事件调度状态开关事件调度(临时)开关事件调度(永久) 事件使用创建事件语法子句分析执行计划子句事件主体子句 查询事件修改事件删除事件 事件介绍 MySQL事件(event)是
2023-08-20

mysql开启事件

set global event_scheduler=on;
mysql开启事件
2017-10-02

mysql触发器的三种触发事件

mysql触发器在特定事件发生时执行动作,有三种触发事件:1. before:在操作发生前触发,允许检查数据或更新其他表;2. after:在操作发生后触发,允许发送通知或分析数据;3. instead of:替代操作,允许完全控制对表的修
mysql触发器的三种触发事件
2024-08-01

mysql中Binlog事件的结构是什么

今天就跟大家聊聊有关mysql中Binlog事件的结构是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、说明一个事件对象分为事件头和事件体。如果事件头的长度是x字节,那么事件体
2023-06-15

事件流与事件溯源

事件流是持续捕获和存储系统中发生的事件的过程。这些事件可以实时处理和分析,也可以存储以供后续分析。

MySQL事务

一、事务的概念事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行
MySQL事务
2022-01-22

MySQL事务。

相关资料:https://zhuanlan.zhihu.com/p/70701037        https://zhuanlan.zhihu.com/p/59061106一、事务。  1、概念。事务是由一组SQL语句组成的逻辑处理单元。  2、事务的属性(
2018-12-10

编程热搜

目录