mysql alter event_MYSQL ALTER EVENT介绍

语法

ALTER

[DEFINER = user]

EVENT event_name

[ON SCHEDULE schedule]

[ON COMPLETION [NOT] PRESERVE]

[RENAME TO new_event_name]

[ENABLE | DISABLE | DISABLE ON SLAVE]

[COMMENT 'string']

[DO event_body]

1

2

3

4

5

6

7

8

9

ALTER

[DEFINER=user]

EVENTevent_name

[ONSCHEDULEschedule]

[ONCOMPLETION[NOT]PRESERVE]

[RENAMETOnew_event_name]

[ENABLE|DISABLE|DISABLEONSLAVE]

[COMMENT'string']

[DOevent_body]

ALTER EVENT语句可更改现有事件的一个或多个特征,而无需删除并重新创建它。 DEFINER,ON SCHEDULE,ON COMPLETION,COMMENT,ENABLE / DISABLE和DO子句的语法与CREATE EVENT一起使用的语法完全相同。

任何用户都可以更改该用户具有EVENT特权的数据库上定义的事件。 当用户执行成功的ALTER EVENT语句时,该用户将成为受影响事件的定义者。

ALTER EVENT仅适用于现有事件:

mysql> ALTER EVENT no_such_event

> ON SCHEDULE

> EVERY '2:3' DAY_HOUR;

ERROR 1517 (HY000): Unknown event 'no_such_event'

1

2

3

4

mysql>ALTEREVENTno_such_event

>ONSCHEDULE

>EVERY'2:3'DAY_HOUR;

ERROR1517(HY000):Unknownevent'no_such_event'

在以下每个示例中,假定定义了名为myevent的事件,如下所示:

CREATE EVENT myevent

ON SCHEDULE

EVERY 6 HOUR

COMMENT 'A sample comment.'

DO

UPDATE myschema.mytable SET mycol = mycol + 1;

1

2

3

4

5

6

CREATEEVENTmyevent

ONSCHEDULE

EVERY6HOUR

COMMENT'A sample comment.'

DO

UPDATEmyschema.mytableSETmycol=mycol+1;

以下语句将myevent的计划从立即开始的每六个小时更改为立即运行的四个小时,开始每十二小时更改一次:

ALTER EVENT myevent

ON SCHEDULE

EVERY 12 HOUR

STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;

1

2

3

4

ALTEREVENTmyevent

ONSCHEDULE

EVERY12HOUR

STARTSCURRENT_TIMESTAMP+INTERVAL4HOUR;

可以在单个语句中更改事件的多个特征。 本示例将myevent执行的SQL语句更改为从mytable删除所有记录的语句; 它还会更改事件的计划,以便在运行此ALTER EVENT语句后的一天执行一次。

ALTER EVENT myevent

ON SCHEDULE

AT CURRENT_TIMESTAMP + INTERVAL 1 DAY

DO

TRUNCATE TABLE myschema.mytable;

1

2

3

4

5

ALTEREVENTmyevent

ONSCHEDULE

ATCURRENT_TIMESTAMP+INTERVAL1DAY

DO

TRUNCATETABLEmyschema.mytable;

仅对要更改的特征在ALTER EVENT语句中指定选项; 省略的选项保留其现有值。 这包括CREATE EVENT的任何默认值,例如ENABLE。

要禁用myevent,请使用以下ALTER EVENT语句:

ALTER EVENT myevent

DISABLE;

1

2

ALTEREVENTmyevent

DISABLE;

ON SCHEDULE子句可以使用涉及内置MySQL函数和用户变量的表达式来获取其包含的任何时间戳或间隔值。 您不能在此类表达式中使用存储的例程或用户定义的函数,也不能使用任何表引用。 但是,您可以使用SELECT FROM DUAL。 对于ALTER EVENT和CREATE EVENT语句都是如此。 在这种情况下,明确不允许引用存储的例程,用户定义的函数和表,并且它们会因错误而失败(请参见Bug#22830)。

尽管在其DO子句中包含另一个ALTER EVENT语句的ALTER EVENT语句似乎成功,但是当服务器尝试执行生成的计划事件时,执行失败并显示错误。

要重命名事件,请使用ALTER EVENT语句的RENAME TO子句。 该语句将事件myevent重命名为yourevent:

ALTER EVENT myevent

RENAME TO yourevent;

1

2

ALTEREVENTmyevent

RENAMETOyourevent;

您还可以使用ALTER EVENT … RENAME TO …和db_name.event_name表示法将事件移动到其他数据库,如下所示:

ALTER EVENT olddb.myevent

RENAME TO newdb.myevent;

1

2

ALTEREVENTolddb.myevent

RENAMETOnewdb.myevent;

要执行上一条语句,执行它的用户必须在olddb和newdb数据库上都具有EVENT特权。

注意:没有RENAME EVENT语句。

在复制从属服务器上使用值DISABLE ON SLAVE而不是ENABLE或DISABLE来指示在主服务器上创建并复制到从属服务器但未在从属服务器上执行的事件。 通常,DISABLE ON SLAVE会根据需要自动设置。 但是,在某些情况下,您可能需要或需要手动更改它。

浏览量:

86

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值