事件(event)是MySQL 5.1版本后引入的新特性。事件是在特定时刻调用的数据库对象,一个事件可以调用一次,也可周期性地被调用,它由一个特定的线程来管理,该线程被称为“事件调度器”,在创建事件之前,事件调度器必须处于打开状态。
事件调度器是MySQL数据库服务器的一部分,负责事件的调度,它不断监视某个事件是否被调用。在创建事件之前,事件调度器必须处于打开状态,在MySQL中使用全局变量 @@EVENT_SCHEDULER来监控事件调度器是否开启,在实际应用中可以使用SHOW VARIABLES LIKE来查看事件调度器的状态,并可以通过修改该@@GLOBAL.EVENT_SCHEDULER的值为ON来打开 MySQL的事件调度器。
事件创建的核心语法
CREATE EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE| DISABLE ON SLAVE ]
[COMMENT 'comment']
DO event_body;
事件创建的语法说明
1)IF NOT EXISTS:只有在同名事件不存在时才创建,否则忽略。
2)ON SCHEDULE schedule: 定义执行的时间和时间间隔。
3)ON COMPLETION [NOT] PRESERVE: 定义事件是一次执行还是永久执行,默认为一次执行,即NOT PRESERVE。
4)ENABLE | DISABLE | DISABLE ON SLAVE: 表示设定事件的状态,Enable表示系统将执行这个事件,Disable表示系统不执行该事件,在主从环境下的event操作中,若自动同步主服务器上创建事件的语句,则会自动加上DISABLE ON SLAVE。
5)COMMENT 'comment':定义事件的注释。
6)DO event_body:用于指定事件执行的动作,可以是一条SQL语句也可以是一个存储过程或一个BEGIN...END语句块。