Spec-Zone.ru › MySQL 5.7

23.4.1 Обзор планировщика событий

События MySQL — это задачи, выполняемые по расписанию. Поэтому мы иногда называем их запланированными событиями. При создании события вы создаете именованный объект базы данных, содержащий одну или несколько SQL-команд, которые будут выполняться через определенные интервалы, начиная и заканчивая в определённые дату и время. По концепции это похоже на Unix crontab (также известное как “задача cron”) или планировщик задач Windows.

Задачи такого типа также иногда называют “временными триггерами”, подразумевая, что это объекты, которые активируются по прошествии времени. Хотя это в основном верно, мы предпочитаем использовать термин события, чтобы избежать путаницы с триггерами, обсуждаемыми в Разделе 23.3, «Использование триггеров». События также не следует путать с “временными триггерами”. Если триггер — это объект базы данных, чьи команды выполняются в ответ на определённый тип события, происходящего в заданной таблице, то (запланированное) событие — это объект, чьи команды выполняются в ответ на прохождение заданного интервала времени.

Хотя в SQL-стандарте нет положений для планирования событий, существуют прецеденты в других системах баз данных, и вы можете заметить некоторые сходства между этими реализациями и реализацией в MySQL Server.

События MySQL обладают следующими основными функциями и свойствами:

  • В MySQL событие однозначно идентифицируется по имени и схеме, к которой оно присвоено.

  • Событие выполняет определенное действие по расписанию. Это действие состоит из SQL-команды, которая может быть составной командой в блоке BEGIN ... END, если это необходимо (см. Раздел 13.6, «Составные команды»). Время срабатывания события может быть однократным или периодическим. Однократное событие выполняется только один раз. Периодическое событие повторяет свое действие через регулярные интервалы, и расписание периодического события может быть назначено с указанием начала и окончания дня и времени, или без них. (По умолчанию расписание периодического события начинается сразу после его создания и продолжается неопределенно до его отключения или удаления.)

    Если повторяющееся событие не завершается в течение своего интервала планирования, результатом может быть одновременное выполнение нескольких экземпляров события. Если это нежелательно, вы должны установить механизм для предотвращения одновременного выполнения экземпляров. Например, можно использовать функцию GET_LOCK() или блокировку строк или таблиц.

  • Пользователи могут создавать, изменять и удалять запланированные события с помощью SQL-команд, предназначенных для этих целей. Синтаксически некорректные команды создания и изменения событий завершаются соответствующим сообщением об ошибке. Пользователь может включать в действие события команды, требующие привилегий, которые у пользователя фактически нет. Команда создания или изменения события выполняется успешно, но действие события завершается неудачно. Подробности см. в Разделе 23.4.6, «Планировщик событий и привилегии MySQL».

  • Многие свойства события можно установить или изменить с помощью SQL-команд. Эти свойства включают имя события, время срабатывания, сохранение (т. е. сохраняется ли оно после истечения расписания), состояние (активно или выключено), выполняемое действие и схему, к которой оно присвоено. См. Раздел 13.1.2, «Команда ALTER EVENT».

    По умолчанию определяющим событие является пользователь, который его создал, если событие не было изменено. В этом случае определяющим пользователем является пользователь, выпустивший последнюю команду ALTER EVENT, затронувшую данное событие. Событие может быть изменено любым пользователем, имеющим привилегию EVENT на базе данных, для которой определено событие. См. Раздел 23.4.6, «Планировщик событий и привилегии MySQL».

  • Команда действия события может включать большинство SQL-команд, разрешенных в хранимых процедурах. Ограничения см. в Разделе 23.8, «Ограничения на хранимые программы».

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

Spec-Zone.ru

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