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 分钟 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 语句验证表数据的内容,则可以观察到插入的记录,如下所示 -
SELECT * from data;
上述查询产生以下输出 -
Name | age |
---|---|
Rahman | 25 |
Raju | 30 |
IF NOT EXISTS 子句
如果您将 IF NOT EXISTS 子句与 CREATE EVENT 语句一起使用(如下所示),则会创建一个新事件;如果指定名称的事件已存在,则查询将被忽略。
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 amount DO event_body;
以下查询创建一个每月截断表数据的事件 -
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.html