15.1.3 Заявление ALTER EVENT
ALTER
[DEFINER = user]
EVENT event_name
[ON SCHEDULE schedule]
[ON COMPLETION [NOT] PRESERVE]
[RENAME TO new_event_name]
[ENABLE | DISABLE | DISABLE ON {REPLICA | SLAVE}]
[COMMENT 'string']
[DO event_body]
Заявление ALTER EVENT изменяет одну или несколько характеристик существующего события, без необходимости его удаления и повторного создания. Синтаксис для каждого из DEFINER, ON SCHEDULE, ON COMPLETION, COMMENT, ENABLE / DISABLE, и DO пунктов точно такой же, как при использовании с CREATE EVENT. (См. Раздел 15.1.13, «Заявление 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 заявлений. Ссылки на хранимые процедуры, загружаемые функции и таблицы в таких случаях запрещены и приводят к ошибке (см. ошибку #22830).
Несмотря на то, что ALTER EVENT заявление, содержащее другое ALTER EVENT заявление в своём пункте DO, может показаться успешным, при попытке сервера выполнить запланированное событие, выполнение завершается ошибкой.
Для переименования события используйте пункт RENAME TO заявления ALTER
EVENT. Это заявление переименовывает событие 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 REPLICA используется на реплике вместо ENABLE или DISABLE для обозначения события, которое было создано на сервере источника репликации и реплицировано на реплику, но которое не выполняется на реплике. Обычно DISABLE ON REPLICA устанавливается автоматически по необходимости; однако, есть некоторые обстоятельства, в которых вам может потребоваться или захотеться изменить его вручную. Дополнительную информацию см. в Разделе 19.5.1.16, «Репликация вызываемых функций».
DISABLE ON REPLICA заменяет DISABLE ON
SLAVE, которое устарело и может быть удалено в будущей версии MySQL.
© 2025 Oracle
Licensed under the GPLv2 License.