【日常记录-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;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫白小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值