MySQL ALTER EVENT 语句



MySQL ALTER EVENT 语句

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

ALTER EVENT 语句用于更改 MYSQL 事件的特性。

语法

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

ALTER EVENT old_event_name
RENAME TO new_event_name

其中,old_event_name 是您需要更改的事件的名称,new_event_name 是您需要将事件重命名的新的名称。

示例(重命名事件)

在以下查询中,我们创建了一个名为 Data 的表:

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

现在,我们创建一个事件,将记录插入到上面创建的表中:

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

创建事件后,如果您使用 SHOW EVENTS 语句验证事件列表,您可以在列表中观察到已创建的事件:

SHOW EVENTS;

以上 show 语句产生以下输出:

***************** 1. row *****************
                  Db: test
                Name: sample_event
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-04 14:08:03
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
1 row in set (0.01 sec)

以下查询重命名上面创建的事件 sample_event:

ALTER EVENT sample_event RENAME TO new_event_name;

验证

如果您再次使用 SHOW EVENTS 语句获取事件列表,您可以观察到已更改的名称:

SHOW EVENTS;

以下是上述查询的输出:

***************** 1. row *****************
                  Db: test
                Name: new_event_name
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MONTH
              Starts: 2023-12-04 14:08:03
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

更改事件计划

您可以使用 ALTER 语句的 ON SCHEDULE 子句更改现有事件的计划。

语法

以下是用于更改现有事件计划的 MySQL ALTER EVENT 语句的语法:

ALTER EVENT event_name
ON SCHEDULE new_time_stamp

其中,event_name 是您需要更改的事件的名称,new_time_stamp 是新的时间戳值。

示例

假设我们创建了一个事件,该事件在当前时间戳后 1 分钟将记录插入数据表,如下所示:

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

以下查询将上述创建的事件的计划修改为每月一次:

ALTER EVENT example_event ON SCHEDULE EVERY 1 MONTH DO TRUNCATE TABLE data;

更改事件主体

您可以使用 ALTER 语句的 DO 子句更改现有事件的主体。

语法

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

ALTER EVENT event_name
DO event_body

其中,event_name 是您需要更改的事件的名称,event_body 是事件的新主体。

示例

假设我们创建了一个事件,该事件将 3 条记录插入数据表,如下所示:

CREATE EVENT test_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 
Minute DO INSERT INTO Data VALUES('Rahman', 25), ('Ram', 35), ('Raj', 30);

如果您验证数据表的内容,您可以观察到插入的记录:

select * from data;

输出

上述查询产生以下输出:

姓名 年龄
Rahman 25
Ram 35
Raj 30

以下查询更改上述事件的主体,使其截断数据表的内容:

ALTER EVENT test_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 
Minute DO TRUNCATE TABLE data;

如果您(再次)验证数据表的内容,您可以观察到空表,如下所示:

select * from data;
Empty set (0.08 sec)

COMMENT 子句

您可以在创建事件时使用 COMMENT 子句添加注释,如下所示:

语法

以下是更改现有事件注释的语法:

ALTER EVENT event_name COMMENT 'string';

示例

假设我们创建了一个事件,如下所示:

CREATE EVENT
event_hourly
ON SCHEDULE
EVERY 1 MONTH
COMMENT 'This truncates the data table each month'
DO
TRUNCATE TABLE data;

以下查询更改上面添加的注释:

ALTER EVENT event_hourly COMMENT 'This is a new string';
广告

© . All rights reserved.