相关文件10bet官方网站 下载本手册 本手册摘录

25.4.1活动调度程序概述

MySQL事件是根据计划运行的任务。因此,我们有时将它们称为预定事件。创建事件时,您正在创建包含一个或多个SQL语句的命名数据库对象,以在特定日期和时间以一个或多个规则的间隔,开头和结尾执行。概念上,这类似于Unix的想法定时任务(也称为aCron工作)或Windows任务调度程序。

这种类型的计划任务有时也称为颞触发,暗示这些是随着时间的推移触发的对象。虽然这基本上是正确的,但我们更愿意使用该术语活动避免与讨论的类型的触发混淆第25.3节,“使用触发器”.事件应该更具体地与之混淆临时触发.触发器是一个数据库对象,它的语句是为了响应给定表上发生的特定类型的事件而执行的,而(计划的)事件是一个对象,它的语句是为了响应指定的时间间隔而执行的。

虽然在SQL标准中没有关于事件调度的规定,但是在其他数据库系统中也有先例,并且您可能会注意到这些实现与MySQL服务器中发现的有些相似之处。

MySQL事件有以下主要特性和属性:

  • 在MySQL中,一个事件由其名称和分配它的架构唯一标识。

  • 事件根据计划执行特定操作。此操作包含一个SQL语句,可以是一个复合语句开始......结束如果需要块(见第13.6节“复合声明语法”)。一个事件的时机可以是一度复发.一次性事件仅执行一次。经常性事件以规则的间隔重复其动作,并且可以将定期事件的计划分配特定的开始日和时间,结束日和时间,两者或两者。(默认情况下,在创建时,重复事件的计划开始,并且在禁用或丢弃之前,无限期地继续。)

    如果重复事件未在其调度间隔内终止,则结果可以是同时执行事件的多个实例。如果这是不可取的,您应该协调一个机制来防止同时实例。例如,您可以使用get_lock()功能或行或表锁定。

  • 用户可以使用用于这些目的的SQL语句创建、修改和删除计划的事件。语法无效的事件创建和修改语句失败,并给出适当的错误消息。用户可以在事件操作中包含语句,这些语句需要用户实际上没有的特权.事件创建或修改语句成功,但事件的操作失败。看第25.4.6节,“事件调度程序和MySQL特权”有关详细信息。

  • 可以使用SQL语句设置或修改事件的许多属性。这些属性包括事件的名称,时序,持久性(即,无论是在其计划到期后保留它),状态(已启用或禁用),要执行的操作,以及分配它的架构。看第13.1.3节“Alter活动陈述”

    一个事件的默认定义是创建该活动的用户,除非事件已被更改,在这种情况下,定位是发出最后一个的用户改变事件声明影响该事件。任何具有的用户都可以修改事件事件定义事件的数据库上的权限。看第25.4.6节,“事件调度程序和MySQL特权”

  • 事件的操作语句可以包括在存储的例程中允许的大多数SQL语句。对于限制,看第25.8节“限制存储计划”