CREATE EVENT
语句在 MySQL 中用于创建一个事件调度器(Event Scheduler)的事件。事件调度器允许你安排数据库任务(如查询、数据更新等)在将来的某个时间点自动执行,或者根据特定的时间间隔重复执行。这对于需要定期执行的任务特别有用,比如数据清理、报表生成等。
CREATE
[DEFINER = user]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'string']
DO event_body;
schedule: {
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
}
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
此语句创建并安排新事件。除非启用事件计划程序,否则事件不会运行。
CREATE EVENT需要创建事件的模式的EVENT权限。如果存在DEFINER子句,则所需的权限取决于用户值。
有效CREATE EVENT语句的最低要求如下:
- 关键字CREATE EVENT加上事件名称,该名称在数据库模式中唯一标识事件。
- 按计划条款,决定事件执行的时间和频率。
- DO子句,其中包含要由事件执行的SQL语句。
这是一个最小CREATE EVENT语句的示例:
CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
UPDATE myschema.mytable SET mycol = mycol + 1;
前面的语句创建了一个名为myevent的事件。此事件在创建后一小时执行一次,通过运行一条SQL语句,将myschema.my