Modifying MySQL Events

摘要:在本教程中,您将学习如何使用 MySQL ALTER EVENT修改现有的 MySQL 事件,包括修改事件的时间表、启用或禁用事件以及重命名事件。

MySQL 允许您更改现有事件的各种属性。要更改现有事件,请使用ALTER EVENT语句,如下所示:

ALTER EVENT event_name
ON SCHEDULE schedule
ON COMPLETION [NOT] PRESERVE
RENAME TO new_event_name
ENABLE | DISABLE
DO
  event_bodyCode language: PHP (php)

请注意, ALTER EVENT语句仅应用于现有事件。如果您尝试修改不存在的事件,MySQL 将发出错误消息,因此,在更改事件之前,您应该始终使用SHOW EVENTS语句检查事件是否存在。

SHOW EVENTS FROM classicmodels;

MySQL ALTER EVENT示例

让我们创建一个示例事件来演示ALTER EVENT语句的各种功能。

以下语句创建一个事件,该事件每分钟向messages表中插入一个新行。

CREATE EVENT test_event_04
ON SCHEDULE EVERY 1 MINUTE
DO
   INSERT INTO messages(message,created_at)
   VALUES('Test ALTER EVENT statement',NOW());Code language: PHP (php)

更改时间表

要使事件每 2 分钟运行一次,请使用以下语句:

ALTER EVENT test_event_04
ON SCHEDULE EVERY 2 MINUTE;

更改事件主体

您还可以通过指定新逻辑来更改事件的主体,如下所示:

ALTER EVENT test_event_04
DO
   INSERT INTO messages(message,created_at)
   VALUES('Message from event',NOW());Code language: PHP (php)

您可以等待2分钟,然后再次查看messages表:

SELECT * FROM messages;

禁用事件

要禁用该事件,请使用以下语句:

ALTER EVENT test_event_04
DISABLE;

您可以使用SHOW EVENTS语句检查事件的状态,如下所示:

SHOW EVENTS FROM classicmodels;

启用事件

要启用已禁用的事件,请在ALTER EVENT语句后使用ENABLE关键字,如下所示:

ALTER EVENT test_event_04
ENABLE;

重命名事件

MySQL 不提供RENAME EVENT语句。幸运的是,您可以使用ALTER EVENT重命名现有事件,如下所示:

ALTER EVENT test_event_04
RENAME TO test_event_05;

将事件移动到另一个数据库

您可以使用RENAME TO子句将事件从一个数据库移动到另一个数据库,如下所示:

ALTER EVENT classicmodels.test_event_05
RENAME TO newdb.test_event_05Code language: CSS (css)

假设您的 MySQL 数据库服务器中存在newdb数据库。

在本教程中,我们向您展示了如何使用ALTER EVENT语句更改 MySQL 事件的各种属性。

本教程有帮助吗?