ALTER EVENT语句可以更改现有事件的一个或多个特征,而无需删除并重新创建它。DEFINER、ON SCHEDULE、ON COMPLETION、COMMENT、ENABLE/DISABLE和DO子句的语法与CREATE EVENT使用时的语法完全相同。
只要用户拥有数据库的EVENT权限,就可以更改在数据库上定义的事件。当用户成功执行ALTER EVENT语句时,该用户将成为事件的定义者。
ALTER EVENT仅适用于已存在事件:
在以下每个示例中,假设名为myevent的事件定义如下:
下面的语句将myevent的调度从立即开始的每六小时一次更改为每十二小时一次,从运行该语句起四小时开始:
可以在一个语句中更改事件的多个特征。此示例将myevent执行的SQL语句更改为从mytable中删除所有记录的语句;它还更改了事件的调度,使其在运行ALTER EVENT语句一天后执行一次。
在ALTER EVENT语句中只为要更改的那些特性指定选项;省略的选项保留其现有值。这包括CREATE EVENT的任何默认值,例如ENABLE。
要禁用myevent,请使用以下ALTER EVENT语句:
ON SCHEDULE子句可以使用包含内置MySQL函数和用户变量的表达式来获取它包含的任何timestamp或interval。不能在此类表达式中使用存储过程或用户定义函数,也不能使用任何表引用;但是,可以使用SELECT FROM DUAL。对于ALTER EVENT和CREATE EVENT语句都是这样。在这种情况下,引用存储过程、用户定义函数和表会引发错误。
尽管ALTER EVENT语句在其DO子句中包含另一个ALTER EVENT语句看起来是可行的,但是当服务器尝试执行结果的调度事件时,执行失败并报错。
要重命名事件,请使用ALTER EVENT语句的RENAME To子句。此语句将事件myevent重命名为yourevent:
还可以使用ALTER EVENT ... RENAME TO ... db_name.event_name 语句将事件移动到其他数据库,如下所示:
要执行前一条语句,执行该语句的用户必须对olddb和newdb数据库具有EVENT特权。
注意
不存在 RENAME EVENT 语句。
DISABLE ON SLAVE用于复制从属服务器,而不是ENABLE或DISABLE,来指示在主服务器上创建并复制到从属服务器上的事件,该事件不会在从属服务器上执行。通常,DISABLE ON SLAVE会根据需要自动设置;但是,在某些情况下,您可能希望或需要手动更改它。
官方文档地址:
https://dev.mysql.com/doc/refman/8.0/en/alter-event.html
MySQL的SQL语句 - 数据定义语句(3)- ALTER EVENT 语句
原文:https://blog.51cto.com/15023289/2560875