`

mysql中的event事件控制

阅读更多
mysql 中的event 在5.1及以上被支持,下面简单讲解下

1  启用
   mysql> SET GLOBAL event_scheduler = ON;
  关闭
    SET GLOBAL event_scheduler = OFF;

2 注意的是event一旦创建后,则只有创建者对它有权限操作,而且5.1的event规定了
event的名称为64个字母大小写倒不敏感,event中不能再创建修改和删除其他event.

3 创建一个event
   DELIMITER |

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      BEGIN
        UPDATE mytable SET mycol = mycol + 1;
      END |

DELIMITER ;
    这里注意用|来表示结束符号。这个事件是每隔1个小时更新数据表一次了
可以通过SHOW EVENTS\G 去看事件,如下
mysql> SHOW EVENTS\G
********************** 1. row **********************
                  Db: mysql
                Name: myevent
             Definer: dbuser@localhost
           Time zone: SYSTEM
                Type: ONE TIME
          Execute At: 2011-10-26 20:24:19
      Interval Value: NULL
      Interval Field: NULL
              Starts: NULL
                Ends: NULL
              Status: ENABLED
          Originator: 0
character_set_client: utf8
collation_connection: utf8_general_ci

  event在完成后会自动结束,除非显式地声明关闭,即
CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    ON COMPLETION PRESERVE
    DO
      BEGIN
        UPDATE mytable SET mycol = mycol + 1;
      END |
使用on completion即可
event结束后,其实还留在数据库中,除非drop掉,即
DROP EVENT myevent;
如果要循环执行event,用every,即

  CREATE EVENT myevent
    ON SCHEDULE EVERY 1 HOUR
    DO
      BEGIN
        UPDATE mytable SET mycol = mycol + 1;
      END |

也可以指定开始和结束时间
CREATE EVENT myevent
    ON SCHEDULE EVERY 1 HOUR
    STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 YEAR
    DO
      BEGIN
        UPDATE mytable SET mycol = mycol + 1;
      END |

当然,INTERVAL后可以跟day,year,month,hour,minutes,seconds等了
也可以更新event,比如

ALTER EVENT myevent
    ON SCHEDULE EVERY 1 MONTH
    STARTS '2011-12-01 01:00:00' |
更名:
  ALTER EVENT myevent
    RENAME TO yourevent;

在PHP代码中,也可以执行event,比如:
  $query = "CREATE EVENT publish_:id 

    ON SCHEDULE AT FROM_UNIXTIME(:scheduleDate) 

  DO 

     BEGIN 

        UPDATE blog_posts SET status = 'published' WHERE id = :id; 

     END"; 

     $stm = $db->prepare($query); 

   $stm->execute(array(":id" => $id, ":scheduleDate" => $scheduleDate)); 

1
0
分享到:
评论

相关推荐

    [数据库] Navicat for MySQL事件Event实现数据每日定期操作1

    【数据库】Navicat for MySQL事件(Event)是MySQL数据库中的一种功能,用于实现定期自动执行的任务,类似于操作系统中的计划任务。在上述情境中,Event主要应用于数据的日常管理,包括定时备份、数据清理以及状态更新...

    mysql Event Scheduler: Failed to open table mysql.event

    MySQL中的事件调度器(Event Scheduler)是一个用于在指定时间执行特定任务的功能,它可以周期性地运行SQL语句或语句块,类似于触发器。然而,当事件调度器无法打开mysql.event表时,可能会遇到错误“Event ...

    mysql定时任务(event事件)实现详解

    MySQL中的定时任务,通常指的是Event事件,它是一种内置的机制,允许用户在特定时间或周期性地执行SQL语句或存储过程,而无需依赖操作系统级别的计划任务。Event事件的引入,使得数据库自身就能处理定时任务,提高了...

    mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解

    MySQL事件管理是数据库系统中非常重要的一个特性,它允许管理员或开发者设置定时任务,自动执行特定的SQL语句。在本篇文章中,我们将深入探讨如何修改、禁用、启用、重命名以及迁移MySQL数据库中的事件。 首先,让...

    ​MySQL语句-ALTER EVENT详细介绍.pdf

    ### MySQL中的ALTER EVENT详解 #### 一、概述 在MySQL中,`EVENT`是一种非常有用的数据库对象,它能够实现自动化的SQL任务调度功能。通过这种机制,用户可以在预设的时间点或者按照一定的周期性时间间隔自动执行一...

    带你了解MySQL中的事件调度器EVENT

    MySQL中的事件调度器(EVENT)是一个功能强大的工具,允许数据库管理员安排MySQL数据库执行计划任务。这些计划任务可以定时执行特定的SQL语句或语句块,从而实现周期性的数据处理和维护任务自动化。事件调度器类似于...

    mysql七天定时下架任务

    此任务通过MySQL数据库中的事件(Event)来定时执行一个自定义的存储过程(Stored Procedure),确保每天定时检查并更新满足条件的记录。 ### 一、任务概述 #### 1.1 背景与目的 在许多网站或应用中,岗位招聘信息...

    mysql中event的用法详解

    MySQL中的Event是数据库管理系统提供的一种时间触发机制,它在MySQL 5.1版本引入,用于自动化执行周期性或定时的任务,类似于Linux系统中的crontab。Event与触发器(Triggers)不同,触发器是在特定数据库操作(如...

    mysql的新特性:事件

    为了确保安全性,MySQL对事件操作进行了权限控制。只有拥有`EVENT`权限的用户才能创建、修改或删除事件。此外,事件的操作是在特定的数据库上下文中进行的,这意味着事件只能在其所属的数据库中可见和执行。 #### ...

    mysql中触发器使用详解.docx

    MySQL中的触发器是一种数据库对象,它与特定的表相关联,并在对表执行INSERT、UPDATE或DELETE操作之前或之后自动执行预定义的SQL语句。触发器的主要作用是增强数据库的逻辑控制,确保数据完整性、记录操作日志以及...

    如何完全干净地删除MySQL数据库

    4. **卸载MySQL服务**:在列表中找到与MySQL相关的服务或程序(例如MySQL Server),选中后点击上方的“卸载”按钮,按照提示完成卸载过程。 #### 二、清理MySQL相关文件 1. **删除MySQL文件夹**: - 打开资源...

    MySQL参考手册中文完整翻译版

    - 事件调度器(Event Scheduler):安排定期执行的任务。 - 复制(Replication):数据库的主从复制,实现高可用性和负载均衡。 压缩包中的其他文件可能包含了阅读手册的指南,如`.chm`(HTML Help)文件的阅读...

    详解MySQL用事件调度器Event Scheduler创建定时任务

    MySQL中的事件调度器(Event Scheduler)是一个强大的工具,它允许用户创建定时任务,这些任务可以在预设的时间点执行或者按照固定的间隔重复执行。这个功能自MySQL 5.1.6版本开始引入,为数据库管理和自动化提供了极...

    MySQL Event Scheduler(事件调度器)

    ### MySQL Event Scheduler(事件调度器) #### 概述 MySQL事件调度器是在MySQL 5.1版本中引入的一项重要功能,它可以作为一种定时任务调度工具,有效地替代了以往必须依赖操作系统任务调度器(如Linux下的cron)来...

    MySQL 安装常见问题

    2. **控制面板卸载:** 在控制面板中找到MySQL,进行卸载。 3. **清理注册表:** 使用regedit打开注册表编辑器,定位并删除以下三个键值: - `HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\...

    逐步讲解MySQL中定时事件计划的创建

    如果权限不足,将无法创建或执行事件,需要更新`mysql.user`和`mysql.db`表中的`Event_priv`字段,并使用`FLUSH PRIVILEGES;`命令使更改生效。 创建事件的语法如下: ```sql CREATE EVENT [IF NOT EXISTS] event_...

    彻底卸载MySQL介绍

    2. **卸载MySQL Server**:接下来,通过“开始”菜单进入“设置”,然后选择“控制面板”。在“程序和功能”中,找到所有与MySQL相关的条目,包括MySQL Server、MySQL Workbench、MySQL Connector等,并逐一卸载。...

    MySQL安装指南.pdf

    在进行卸载之前,您应该停止MySQL服务、结束MySQL进程、通过控制面板卸载程序、手动删除MySQL相关文件夹,并清理与MySQL相关的注册表项和系统中的残余文件。具体步骤如下: 1. 停止MySQL服务。您可以在计算机的“我...

    MYSQL权限不够解决办法

    在使用MySQL数据库的过程中,可能会遇到“权限不足”的错误提示,这通常是因为当前用户没有足够的权限来执行某些操作(如创建表、删除数据等)。本文将详细介绍如何解决MySQL权限不足的问题,并提供具体的解决方案。...

Global site tag (gtag.js) - Google Analytics