修改MySQL事件

时间:2019-11-20 08:52:29  来源:igfitidea点击:

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

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

ALTER EVENT event_name
ON SCHEDULE schedule
ON COMPLETION [NOT] PRESERVE
RENAME TO new_event_name
ENABLE | DISABLE
DO
  event_body

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

SHOW EVENTS FROM classicmodels;

MySQL ALTER EVENT示例

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

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

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

变更时间表

要使事件每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());

您可以等待2分钟,然后再次检查邮件表:

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_05

假定您的MySQL数据库服务器中有newdb数据库可用。

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