ALTER DATABASE语句
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification ...
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
| DEFAULT ENCRYPTION [=] {'Y' | 'N'}
ALTER DATABASE使您可以更改数据库的总体特征。这些特征存储在数据字典中。要使用 ALTER DATABASE,您需要 ALTER数据库特权。 ALTER SCHEMA是ALTER DATABASE的同义词。
可以从第一种语法中省略数据库名称,在这种情况下,该语句适用于默认数据库。
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]
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'
在以下每个示例中,假定myevent已定义命名事件 ,如下所示:
CREATE EVENT myevent
ON SCHEDULE
EVERY 6 HOUR
COMMENT 'A sample comment.'
DO
UPDATE myschema.mytable SET mycol = mycol + 1;
以下语句将计划myevent从立即运行开始的每六个小时一次更改为 立即运行的四个小时,开始每十二小时更改一次:
ALTER EVENT myevent
ON SCHEDULE
EVERY 12 HOUR
STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;
可以在单个语句中更改事件的多个特征。本示例将执行的SQL语句更改为myevent从其中删除所有记录的 语句mytable。它还会更改事件的计划,以使其在ALTER EVENT运行该语句后的一天执行一次 。
ALTER EVENT myevent
ON SCHEDULE
AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
DO
TRUNCATE TABLE myschema.mytable;
ALTER EVENT仅 在语句中为要更改的特征指定选项。省略的选项保留其现有值。这包括任何默认值CREATE EVENT,例如ENABLE。
要禁用myevent,请使用以下 ALTER EVENT语句:
ALTER EVENT myevent
DISABLE;
ON SCHEDULE子句可以使用涉及内置MySQL函数和用户变量的表达式来获取其包含的timestamp或 interval值。您不能在此类表达式中使用存储的例程或用户定义的函数,也不能使用任何表引用。但是,您可以使用SELECT FROM DUAL。对于ALTER EVENT和 CREATE EVENT语句都是如此 。在这种情况下,明确不允许引用存储的例程,用户定义的函数和表,并且它们会因错误而失败(请参见Bug#22830)。
尽管 在其子句ALTER EVENT中包含另一个ALTER EVENT语句的DO语句似乎成功,但是当服务器尝试执行生成的计划事件时,执行失败并显示错误。
要重命名事件,请使用ALTER EVENT语句的RENAME TO子句。该语句将事件重命名myevent为 yourevent:
ALTER EVENT myevent
RENAME TO yourevent;
您还可以使用ALTER EVENT ... RENAME TO ...和 db_name.event_name 标记将事件移动到其他数据库 ,如下所示:
ALTER EVENT olddb.myevent
RENAME TO newdb.myevent;
要执行前一条语句,执行该语句的用户必须EVENT同时具有olddb和newdb数据库的特权 。
注意
没有RENAME EVENT语句。
DISABLE ON SLAVE在复制从属服务器上使用 该值代替ENABLE或 DISABLE指示在主服务器上创建并复制到从属服务器但未在从属服务器上执行的事件。通常,DISABLE ON SLAVE根据需要自动设置;但是,在某些情况下,您可能需要或需要手动更改它。
ALTER FUNCTION语句
ALTER FUNCTION func_name [characteristic ...]
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
语句可用于更改存储函数的特征。ALTER FUNCTION语句中可以指定多个更改 。但是,您不能使用此语句更改参数或存储函数的主体。要进行此类更改,必须使用DROP FUNCTION和删除并重新创建该函数CREATE FUNCTION。
您必须具有ALTER ROUTINE 该功能的特权。(该特权会自动授予函数创建者。)如果启用了二进制日志记录,则该ALTER FUNCTION 语句可能也需要该 SUPER特权,