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

ALTER EVENT 语句

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

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

只要用户拥有数据库的EVENT权限,就可以更改在数据库上定义的事件。当用户成功执行ALTER EVENT语句时,该用户将成为事件的定义者。

ALTER EVENT仅适用于已存在事件:

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

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

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

下面的语句将myevent的调度从立即开始的每六小时一次更改为每十二小时一次,从运行该语句起四小时开始:

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

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

MySQL的SQL语句 - 数据定义语句(3)- ALTER EVENT 语句
在ALTER EVENT语句中只为要更改的那些特性指定选项;省略的选项保留其现有值。这包括CREATE EVENT的任何默认值,例如ENABLE。

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

MySQL的SQL语句 - 数据定义语句(3)- 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:

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

还可以使用ALTER EVENT ... RENAME TO ... db_name.event_name 语句将事件移动到其他数据库,如下所示:
MySQL的SQL语句 - 数据定义语句(3)- ALTER EVENT 语句

要执行前一条语句,执行该语句的用户必须对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 语句

上一篇:Odoo14 官方新版docker镜像跑起来网站页面异常 元素 '' 在母级视图中没有找到


下一篇:Mysql数据操作管理