MySQL事件

news2025/1/10 20:28:41

文章目录

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


事件介绍

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_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;

示例:

CREATE DEFINER = `root`@`%` EVENT IF NOT EXISTS event1
ON SCHEDULE EVERY 1 MONTH STARTS '2023-01-20 00:00:00' ENDS '2025-01-20 00:00:00'
ON COMPLETION PRESERVE
ENABLE
COMMENT '测试事件1'
DO BEGIN
	INSERT 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';

3.从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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【刷题】二进制求和

当你觉得小学二年级教的的竖式学会了以后,此题又是一记重击。 目录 前言 一、题目 二、找规律 三、思想 1.位数相同 2.位数不同 3.注意事项 四、具体实现 总结 前言 同上次做过的的二进制求和相似(按位异或求出的是无进位和,按位与求…

大数据技术架构(组件)14——Hive:掩码函数杂项函数

1.4.8、掩码函数1.4.8.1、mask-->Hive2.1.01.4.8.12、mask_first_n->Hive2.1.01.4.8.13、mask_last_n -->Hive2.1.01.4.8.14、mask_show_first_n-->Hive2.1.01.4.8.15、mask_show_last_n -->Hive2.1.01.4.8.16、mask_hash -->Hive2.1.0支持版本返回值类型函数…

让你深夜emo的“网抑云”,是如何做产品设计的?

网易云音乐作为国内首个以“歌单”为核心架构的音乐APP,有的人喜欢它的热评,有的人却觉得它的版权太少,虽然网易云音乐不是曲库最丰富的听歌软件,但绝对是听歌软件里情感体验最好的。 我很好奇它具有什么力量,能够使用…

ReentrantReadWriteLock可重入读写锁

目录 读写锁: 锁降级 锁饥饿: 读写锁: 定义:一个资源能够被多个读线程访问,或者被一个写线程访问,但是不能同时存在读写线程。 特点:读写互斥,写锁独占,读读可共享,读没有完…

分布式学习第三天—远程调用和网关

Feign远程调用 Feign的介绍 Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign 其作用就是帮助我们优雅的实现http请求的发送 Feign远程调用的使用步骤 1.引入依赖 在子模型服务的pom文件中引入feign的依赖: &l…

【计网】入门知识

一些基本认识网络传输基本要素:网络编程:python的网络编程方式TCP和UDP一些编程技巧socket实现TCP通信网络传输基本要素: 有连接通道、传输字节数据、输入输出遵守一样的协议 网络编程: CS(QQ下载客户端&#xff09…

linux防火墙究竟如何使用?iptables的原理与简单应用

1. 什么是防火墙? 在计算机体系中,防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其…

Vulkan 理解Vertex Input Description

此文为个人记录&#xff0c;感兴趣直接看https://zhuanlan.zhihu.com/p/450157594 首先&#xff0c;一个顶点的结构体 struct Vertex {glm::vec3 pos;glm::vec3 color; }CPU端给出顶点数据 const std::vector<Vertex> vertices {{{0.0f, -0.5f}, {1.0f, 0.0f, 0.0f}},…

Allegro如何显示盲埋孔钻孔所在层面操作指导

Allegro如何显示盲埋孔钻孔所在层面操作指导 在用Allegro做PCB设计的时候,涉及盲埋孔设计的时候,需要实时看到盲埋孔是打在哪层到哪层,如下图 实时显示了盲埋孔是从哪层到哪层的,比如1-3,3-6等等 如何显示,具体操作如下 选择Setup选择design Parameters

[golang Web开发] 3.golang web开发:处理请求

简介 Go语音的net/http包提供了一系列用于表示HTTP报文的结构,可以使用它处理请求和发送响应,其中Request结构代表了客户端发送的请求报文,下面是Request讲解 type Request struct {// Method指定HTTP方法&#xff08;GET、POST、PUT等&#xff09;。对客户端&#xff0c;"…

linux系统加固

linux安全加固 linux系统安全包括用户安全、权限安全、文件安全 从那些方面进行加固 身份鉴别 访问控制 安全审计 资源控制 入侵防范 在linux当中一切皆文件 身份鉴别 /etc/login.defs 文件功能 查看密码策略 /etc/login.defs文件定义了与/etc/passwd和/etc/shadow配套的用户限…

VOIP创建

一、介绍VOIP的推送证书的创建方式和普通的证书的创建方式基本一致。二、步骤首先需要生成证书签名的请求文件CerSingingRequest&#xff0c;打开钥匙串应用&#xff0c;点击钥匙串访问->证书助理->从证书颁发机构请求输入电子邮件和名称后保存到本地3.在developer.apple…

服务器防火墙 配置端口号

作为前端的我头次做运维的事情。 现在服务器是的默认端口好像只有80&#xff0c;443&#xff0c;其余端口都需要我们配置 域ping 通了&#xff0c;以为服务配置好了可以撸起袖子加油干&#xff0c;但是 访问公司的服务 出错了400 访问公司的服务xxx.168.30.xxx:8081&#xff…

【字符串】leetcode344.反转字符串(C/C++/Java/Python/Js)

leetcode344.反转字符串1 题目2 思路3 代码3.1 C版本3.2 C版本3.3 Java版本3.4 Python版本3.5 JavaScript版本4 总结打基础的时候&#xff0c;不要太迷恋于库函数。 1 题目 题源链接 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给…

国内最新餐饮品牌全案设计十大排名(2023年榜单)

餐饮全案设计是餐饮店经营过程之前的重要一步&#xff0c;想要打造一家特色餐饮店并不是一件简单的事。一来要满足功能性需求的同时还具有一定的审美性&#xff1b;二来既要尽可能高地提升空间利用率让顾客消费体验愉悦和服务员工作效率高&#xff0c;能够展现餐厅的主题和文化…

分布式锁原理及Redis如何实现分布式锁

一淘模板给大家带来了关于redis的相关知识&#xff0c;其中主要介绍了关于分布式锁是什么&#xff1f;Redis又是怎么实现分布式锁的&#xff1f;需要满足什么条件&#xff1f;下面一起来看一下吧&#xff0c;希望对需要的朋友有帮助。 一、分布式锁基本原理 分布式锁&#xff…

PTA L1-027 出租(详解)

前言&#xff1a;本期是关于出租的详解&#xff0c;内容包括四大模块&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读&#xff0c;今天你c了吗&#xff1f; 题目&#xff1a; 下面是新浪微博上曾经很火的一张图&#xff1a; 一时间网上一片求救…

【python学习笔记】:数据科学库操作(三)

接上一篇&#xff1a; 14、Pandas Pandas 是一个快速、强大、灵活且易于使用的开源数据分析和操作工具&#xff0c; Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据&#xff0c;可以对各种数据进行运算操作&#xff0c;比如归并、再成形、选择&#…