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按计划在当前时间戳 + 间隔 1 分钟执行 INSERT INTO Data VALUES('Rahman', 25), ('Ram', 35), ('Raj', 30);
如果您验证数据表的内容,您可以观察到插入的记录 -
select * from data;
输出
上述查询产生以下输出 -
Name | age |
---|---|
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';