返回顶部
首页 > 资讯 > 数据库 >MySQL事件
  • 674
分享到

MySQL事件

mysql数据库 2023-08-20 05:08:34 674人浏览 独家记忆
摘要

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


事件介绍

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

您可能感兴趣的文档:

--结束END--

本文标题: MySQL事件

本文链接: https://lsjlt.com/news/376171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL事件
    文章目录 事件介绍事件调度查询事件调度状态开关事件调度(临时)开关事件调度(永久) 事件使用创建事件语法子句分析执行计划子句事件主体子句 查询事件修改事件删除事件 ...
    99+
    2023-08-20
    mysql 数据库
  • mysql开启事件
    set global event_scheduler=on; ...
    99+
    2017-10-02
    mysql开启事件
  • MySQL-事件详解
    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易,人间真情 目录 事务 1 事务简介...
    99+
    2023-09-03
    数据库 mysql 云计算
  • mysql事件与事务如何区分
    mysql事件与事务如何区分?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mysql事件与事务如何区分1.事件MySQL中的事...
    99+
    2024-04-02
  • mysql事件之修改事件、禁用事件、启用事件、事件重命名及数据库事件迁移操作的示例分析
    这篇文章主要为大家展示了“mysql事件之修改事件、禁用事件、启用事件、事件重命名及数据库事件迁移操作的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“m...
    99+
    2024-04-02
  • MySQL中什么是事件
    MySQL中什么是事件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在MySQL5.1中新增了一个特色功能事件调度器(Even...
    99+
    2024-04-02
  • mysql 基础 事件(定时任务)
    一、普通事件:直接执行语句: DROP EVENT IF EXISTS job_insertgood; DELIMITER $$ CREATE EVENT job_insertgood ON SCHEDU...
    99+
    2024-04-02
  • MySQL数据库高级(八)——事件
    MySQL数据库高级(八)——事件 一、事件简介 1、事件简介 事件是用来执行定时任务的一组SQL集,在时间到时会触发。一个事件可调用一次,也可周期性的启动,由一个特定的事件调度器线程来管理的。事件取代了原...
    99+
    2024-04-02
  • MySQL 中怎么忽略binlog事件
    这期内容当中小编将会给大家带来有关MySQL 中怎么忽略binlog事件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  1、未启用GTID模式时  只需通过设定 SQL...
    99+
    2024-04-02
  • MYSQL事件高度器的用法
    本篇内容介绍了“MYSQL事件高度器的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 要查看...
    99+
    2024-04-02
  • 怎么理解MySQL的EVENT事件
    这篇文章主要介绍“怎么理解MySQL的EVENT事件”,在日常操作中,相信很多人在怎么理解MySQL的EVENT事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解My...
    99+
    2024-04-02
  • 如何查看mysql事件是否执行
    下文给大家带来关于如何查看mysql事件是否执行,感兴趣的话就一起来看看这篇文章吧,相信看完如何查看mysql事件是否执行对大家多少有点帮助吧。        &nb...
    99+
    2024-04-02
  • MySQL事件调度器的用法介绍
    本篇内容主要讲解“MySQL事件调度器的用法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL事件调度器的用法介绍”吧! 事件调度器有时也可称为临时...
    99+
    2024-04-02
  • MySQL事件与触发器专题精炼
    目录了解触发器和事件(定时器)什么是触发器?什么是事件(定时器)?触发器和事件(定时器)的区别创建触发器和事件(定时器)创建触发器创建事件(定时器)对触发器和时间(定时器)的操作查看...
    99+
    2024-04-02
  • mysql中Binlog事件的结构是什么
    今天就跟大家聊聊有关mysql中Binlog事件的结构是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、说明一个事件对象分为事件头和事件体。如果事件头的长度是x字节,那么事件体...
    99+
    2023-06-15
  • mysql触发器的三种触发事件
    mysql触发器在特定事件发生时执行动作,有三种触发事件:1. before:在操作发生前触发,允许检查数据或更新其他表;2. after:在操作发生后触发,允许发送通知或分析数据;3....
    99+
    2024-08-01
    mysql
  • javascript事件冒泡,事件捕获和事件委托详解
    1、事件冒泡:在javascript事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止。并不是所有的事件...
    99+
    2024-04-02
  • MySQL未提交事务造成的等待事件怎么解决
    本篇内容主要讲解“MySQL未提交事务造成的等待事件怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL未提交事务造成的等待事件怎么解决”吧! ...
    99+
    2024-04-02
  • MySQL事务
      一、事务的概念 事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。...
    99+
    2022-01-22
    MySQL事务
  • MySQL事务。
    相关资料:https://zhuanlan.zhihu.com/p/70701037        https://zhuanlan.zhihu.com/p/59061106 一、事务。   1、概念。事务是由一组SQL语句组成的逻辑处理单...
    99+
    2018-12-10
    MySQL事务。
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作