当前位置: 首页 > news >正文

【日常记录-MySQL】EVENT

Author:赵志乾
Date:2024-08-07
Declaration:All Right Reserved!!!

1. 简介

        在MySQL中,EVENT是一种数据库对象,其用于设定数据库任务自动执行。这些任务可以是任意有效的SQL语句,如数据的增删改以及存储过程调用等。EVENT是基于时间或特定条件的自动化任务,非常适合用于执行定期维护任务,如旧数据清理、统计数据更新等。

2. 基本语法

  2.1 创建EVENT
CREATE EVENT [IF NOT EXISTS] event_name  
ON SCHEDULE schedule  
[ON COMPLETION [NOT] PRESERVE]  
[ENABLE | DISABLE | DISABLE ON SLAVE]  
DO  
event_body;
  • IF NOT EXISTS : 可选子句,用于避免创建已存在的EVENT;
  • event_name : 要创建的EVENT的名称;
  • ON SCHEDULE schedule : 定义EVENT的调度,其中schedule可以是一个AT子句(指定一个具体的执行时间)或EVERY子句(指定一个重复的执行间隔),还可以包含STARTS和ENDS子句来限制EVENT的开始时间和结束时间;
  • ON COMPLETION [NOT] PRESERVE :  可选子句,用于指定EVENT执行完后是否保留在数据库中。默认情况下,EVENT执行完后会被删除(NOT PRESERVE),但可以使用ON COMPLETION PRESERVE来保留它;
  • ENABLE | DISABLE | DISABLE ON SLAVE :可选子句,用于指定EVENT的初始状态,ENABLE表示EVENT创建后立即启用,DISABLE表示EVENT创建后禁用,DISABLE ON SLAVE表示EVENT在从服务器上禁用;
  • DO event_body : 触发时执行的SQL语句或存储过程,若有多条语句,则需要使用BEGIN...END块,并可能需要更改语句分割符(使用DELIMITER命令);
   2.2 删除EVENT
DROP EVENT [IF EXISTS] event_name;
  • IF EXISTS :可选子句,用于避免删除不存在的EVENT;
  • event_name : 想要删除EVENT的名称;
  2.3 查看EVENT
SHOW EVENTS FROM database_name;  

3. 示例

  3.1 创建EVENT

        创建一个名为my_event的事件,其每天执行一次,从创建的第二天开始。每次执行,都会将my_table表中的my_column列的值增加1;

CREATE EVENT my_event  
ON SCHEDULE EVERY 1 DAY  
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY)  
DO  UPDATE my_table SET my_column = my_column + 1;
3.2 删除EVENT
DROP EVENT IF EXISTS my_event;

4. 前置条件

        为保证EVENT能够正常工作,需要将MySQL的event scheduler开启,方式如下:

-- 查看事件调度器状态  
SHOW VARIABLES LIKE 'event_scheduler';  -- 开启事件调度器(如果它是关闭的)  
SET GLOBAL event_scheduler = ON;

http://www.lryc.cn/news/417581.html

相关文章:

  • 嵌入式学习day12(LinuxC高级)
  • pytorch中的hook机制register_forward_hook
  • 使用Gin框架返回JSON、XML和HTML数据
  • 网工内推 | 国企运维工程师,华为认证优先,最高年薪20w
  • c# 使用异步函数实现线程的功能
  • MySQL之MySQL server has gone away复现测试
  • 编程深水区之并发④:Web多线程
  • 【实战指南】从提升AI知识库效果,从PDF转Markdown开始
  • Android 删除telephony的features
  • Linux驱动开发—编写第一个最简单的驱动模块
  • 科普文:微服务之Spring Cloud 组件API网关Gateway
  • Kubernetes中的CRI、CNI与CSI:深入理解云原生存储、网络与容器运行时
  • 【数据结构】二叉搜索树(Java + 链表实现)
  • java Brotli压缩算法实现压缩、解压缩
  • centos7.9 安装java相关组件
  • 在IntelliJ IDEA中,快速找到控制类(Controller类)中所有的方法,可以通过以下几种方式实现:
  • ChatGPT的强大之处:探究及与国内产品的对比
  • MySql审计平台
  • 深度学习6--深度神经网络
  • 有了Power BI还需要深入学习Excel图表制作吗?
  • WEB渗透Web突破篇-命令执行
  • 【MYSQL】表操作
  • 破解USB设备通讯协议实现自定义软件控制的步骤与方法
  • FFmpeg源码:av_init_packet、get_packet_defaults、av_packet_alloc函数分析
  • HarmonyOS应用开发知识地图
  • 了解反向代理如何工作吗?
  • ASCII码对照表
  • Git的一些简单使用
  • C++基础语法(下)
  • UKP3d创建斜管的操作