23.4.1 事件计划程序概述

MySQL 事件是根据计划运行的任务。因此,有时我们将它们称为计划事件。创建事件时,将创建一个包含一个或多个 SQL 语句的命名数据库对象,该 SQL 语句将在一个特定的日期和时间开始和结束,并以一个或多个规则的间隔执行。从概念上讲,这类似于 Unix crontab(也称为“ cron 作业”)或 Windows Task Scheduler 的想法。

这种类型的计划任务有时也称为“时间触发器”,这意味着这些对象是随着时间的流逝而触发的。尽管这基本上是正确的,但我们更喜欢使用* events *来避免与第 23.3 节“使用触发器”中讨论的触发器类型混淆。更具体地说,事件不应与“临时触发器”混淆。触发器是一个数据库对象,其语句是响应于给定 table 上发生的特定类型的事件而执行的,而(sched 的)事件是一个语句,其响应于经过指定时间间隔而执行的对象。

尽管 SQL 标准中没有规定事件调度,但其他数据库系统中也有先例,您可能会注意到这些实现与 MySQL Server 中的实现之间存在一些相似之处。

MySQL 事件具有以下主要功能和属性:

如果重复事件未在其调度间隔内终止,则结果可能是事件的多个实例同时执行。如果这是不希望的,则应构建一种机制来防止同时发生实例。例如,您可以使用GET_LOCK()函数或行或 table 锁定。

事件的默认定义者是创建事件的用户,除非事件已被更改,在这种情况下,定义者是发出影响该事件的最后ALTER EVENT语句的用户。任何对定义事件的数据库具有EVENT特权的用户都可以修改事件。参见第 23.4.6 节“事件调度程序和 MySQL 特权”

首页