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';
廣告