• 6.2 事件的创建,修改和删除


    6.2.1 事件的概述

    事件(Event)是在指定时刻才被执行的过程式数据库对象。
    事件通过MySQL中一个很有特色的功能模块——事件调度器(Event Scheduler)进行监视,并确定其是否需要被调用。 

    MySQL的事件调度器可以精确到每秒钟执行一个任务,比操作系统的计划任务更具实时优势。对于一些实时性要求比较高的应用,如股票交易、火车购票、球赛技术统计等就很适合。 

    事件和触发器相似,都是在某些事情发生时启动,由于它们相似,所以事件又称为临时触发器(Temporal Trigger)。它们的区别为触发器是基于某个表所产生的事件来触发的, 而事件是基于特定的时间周期来触发的。 
    使用事件调度器之前必须确保开启事件调度器, 查看当前是否开启事件调度器: 
    show variable like 'event_scheduler'; 
    查看系统变量
    select @@ event_scheduler; 
    如果没有开启事件调度器,可使用以下命令开启
    set globle event_scheduler = 1; 或
    set globle event_scheduler = TRUE; 
    在MySQL的配置文件my.ini中加上“event_scheduler = 1”或“ set globle event_scheduler = NO”,然后重启MysQL服务器。

    6.2.2 事件的创建、删除和修改

    1. 创建事件

    语法格式:create event [ if not exists ] event_name
                      on SCHEDULE schedule
                      [ enable | disable | disable on slave ]
                      do event_body
    其中,这里还涉及到scheduled的描述(AT timestamp子句)和interval的描述(EVERY interval子句)。这里可以参考一下其他大佬的文章:MySQL 事件-CSDN博客

    【例6.6】创建现在立即执行的事件E_direct,执行时创建一个表tb。

    1. create event E_direct
    2. on schedule at now()
    3. do
    4. create table tb(timeline timestamp);

    这里在执行上述代码时,一定要选择数据库,否则会出现 “ No database selected ” 的错误。

    show tables;

    select * from tb;

     

    【例6.7】创建事件E_insertTB,每2s插入一条记录到表tb。

    1. create event E_insertTb
    2. on schedule every 2 second
    3. do
    4. insert into tb values(current_timestamp);

    select * from tb;

    设置的是2s插入一行,这里是一共插入了32行,代表是16秒之后执行的代码。 

    【例6.8】创建事件E_startDays,从第2天起,每天清空表tb,在2024年12月31日结束。

    1. delimiter $$
    2. create event E_startDays
    3. on schedule every 1 day
    4. starts curdate() + interval 1 day
    5. ends '2024 - 12 - 31'
    6. do
    7. begin
    8. truncate table tb;
    9. end $$

    2.修改事件

    语法格式:
    alter table event_name
            [on SCHEDULE schedule]
            [rename to new_event_name]
            [enable | disable | disable on slave]
            [do enent_body]

    【例6.9】将事件E_startDays更名为E_firstDays。

    1. alter event E_startDays
    2. rename to E_firstDays;

    3.删除事件

    可使用drop event 语句。

    【例6.10】删除事件E_firstDays。

    drop event E_firstDays;

  • 相关阅读:
    linux驱动开发:IO模型
    每日一题 2731. 移动机器人(中等,模拟)
    一文教你在IDEA中使用Git
    C/C++统计满足条件的4位数个数 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
    2023江西国际餐饮产业博览会/赣菜文化全国推介大会
    项目管理的核心是什么?
    SpringBoot 前后端分离 实现验证码操作
    学信息系统项目管理师第4版系列31_信息系统工程
    基于Y向连贯性算法的多边形扫描线生成(适用于凸多边形和凹多边形)【原理+java实现】
    蓝牙协议文档下载
  • 原文地址:https://blog.csdn.net/2302_79947880/article/details/139843197