MySQL - CREATE EVENT 语句



MySQL CREATE EVENT 语句

MySQL 事件只不过是在特定时间执行的任务。一个事件可以包含一个或多个 MySQL 语句,这些语句存储在数据库中,并在指定的时间表中执行。

CREATE EVENT 语句用于创建和安排 MySQL 事件。

语法

以下是 MySQL CREATE EVENT 语句的语法:

CREATE EVENT [IF NOT EXISTS] event_name
   ON SCHEDULE time_stamp
   DO event_body;

其中,event_name 是您需要创建的事件的名称,time_stamp 是应执行语句的时间,event_body 是要执行的语句集。

示例

假设我们使用 CREATE TABLE 语句创建了一个名为 data 的表,如下所示:

CREATE TABLE Data (Name VARCHAR(255), age INT);

以下查询创建一个名为 test_event 的事件,它在执行后一分钟在上面创建的表中插入一条记录:

CREATE EVENT example_event1 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 
1 Minute DO INSERT INTO new.Data VALUES('Rahman', 25);

您还可以传递确切的时间来执行事件。首先,让我们使用 Now() 函数检索当前时间,如下所示:

Select Now();

输出

以下是上述查询的输出:

Now()
2021-02-10 12:09:30

以下查询创建另一个事件,我们将其当前时间戳作为时间表传递:

CREATE EVENT example_event2 ON SCHEDULE AT '2021-02-10 12:09:30' 
DO INSERT INTO new.Data VALUES('Raju', 30);

验证

一分钟后,如果您使用 SELECT 语句验证表 data 的内容,您可以观察到插入的记录,如下所示:

SELECT * from data;

上述查询产生以下输出:

姓名 年龄
Rahman 25
Raju 30

IF NOT EXISTS 子句

如果您像下面这样与 CREATE EVENT 语句一起使用 **IF NOT EXISTS** 子句,则会创建一个新事件;如果已经存在具有给定名称的事件,则查询将被忽略。

CREATE EVENT IF NOT EXISTS example_event2 ON SCHEDULE AT 
CURRENT_TIMESTAMP DO DROP TABLE Data;

EVERY 子句

使用 EVERY 子句,您可以创建一个以间隔作为时间表的事件,以下是这样做的语法:

CREATE EVENT event_name ON SCHEDULE EVERY interval quantity DO event_body;

以下查询创建一个事件,该事件每月截断表 data:

CREATE EVENT event_hourly ON SCHEDULE EVERY 1 MONTH DO TRUNCATE TABLE data;

COMMENT 子句

您可以在创建事件时使用此子句添加注释。以下是这样做的语法:

CREATE EVENT event_name ON SCHEDULE schedule COMMENT 
'comment_string' DO event_body;

其中 comment_string 是您需要添加的注释。以下查询在创建事件时添加注释:

CREATE EVENT
event_hourly1
ON SCHEDULE
EVERY 1 MONTH
COMMENT 'This truncates the data table each month'
DO
TRUNCATE TABLE data;
mysql_statements_reference.htm
广告
© . All rights reserved.