Spec-Zone.ru › MySQL 5.7

13.1.2 Заявление 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. (См. Раздел 13.1.12, «Заявление 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 SLAVE используется на реплике вместо ENABLE или DISABLE, чтобы указать событие, созданное на источнике и реплицированное на реплику, но не выполняемое на реплике. Обычно DISABLE ON SLAVE устанавливается автоматически, как требуется; однако, существуют некоторые обстоятельства, при которых вам может потребоваться или захотеться изменить его вручную. См. Раздел 16.4.1.16, «Репликация вызываемых функций» для получения дополнительной информации.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/alter-event.html

Spec-Zone.ru

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