暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 - 数据定义语句(3)- ALTER EVENT 语句

林员外聊编程 2020-07-16
561
ALTER EVENT 语句

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函数和用户变量的表达式来获取它包含的任何timestampinterval。不能在此类表达式中使用存储过程或用户定义函数,也不能使用任何表引用;但是,可以使用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



文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论