Spec-Zone.ru › MySQL 8.4

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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/alter-event.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API