27.5.1 Обзор планировщика событий
События MySQL — это задачи, выполняемые по расписанию. Поэтому их иногда называют планируемыми событиями. При создании события вы создаёте именованный объект базы данных, содержащий одну или несколько SQL-команд, которые будут выполняться через определённые промежутки времени, начиная и заканчивая в определённые дату и время. По концепции это аналогично понятию Unix crontab (также известному как “задача cron”) или планировщику задач Windows.
Задачи этого типа также иногда называют “временными триггерами”, подразумевая, что это объекты, которые срабатывают по прошествии времени. Хотя это в основном верно, мы предпочитаем использовать термин события, чтобы избежать путаницы с триггерами, обсуждаемыми в разделе 27.4 «Использование триггеров». События также не следует путать с “временными триггерами”. Если триггер — это объект базы данных, чьи команды выполняются в ответ на определённый тип события, происходящего в определённой таблице, то (планируемое) событие — это объект, чьи команды выполняются в ответ на прохождение определённого временного интервала.
Хотя в SQL-стандарте нет механизма планирования событий, существуют прецеденты в других системах баз данных, и вы можете заметить некоторые сходства между этими реализациями и реализацией в MySQL Server.
События MySQL обладают следующими основными функциями и свойствами:
В MySQL событие однозначно идентифицируется своим именем и схемой, к которой оно присвоено.
-
Событие выполняет определённое действие по расписанию. Это действие состоит из SQL-команды, которая может быть составной командой в блоке
BEGIN ... END, если это необходимо (см. раздел 15.6 «Синтаксис составной команды»). Время выполнения события может быть либо однократным, либо многократным. Однократное событие выполняется только один раз. Многократное событие повторяет своё действие через регулярные интервалы, и расписание повторяющегося события может быть назначено с указанием конкретного начального и конечного дня и времени, или ни того, ни другого. (По умолчанию расписание повторяющегося события начинается сразу после его создания и продолжается неопределённо, пока оно не будет отключено или удалено.)Если повторяющееся событие не завершается в течение своего интервала планирования, результатом может стать одновременное выполнение нескольких экземпляров события. Если это нежелательно, следует установить механизм, предотвращающий одновременное выполнение экземпляров. Например, можно использовать функцию
GET_LOCK()или блокировку строк или таблиц. Пользователи могут создавать, изменять и удалять планируемые события с помощью SQL-команд, предназначенных для этих целей. Синтаксически некорректные команды создания и изменения событий завершаются соответствующим сообщением об ошибке. Пользователь может включать в действие события команды, требующие привилегий, которыми он не обладает. Команда создания или изменения события выполняется успешно, но действие события завершается с ошибкой. Подробности см. в разделе 27.5.6 «Планировщик событий и привилегии MySQL».
-
Многие свойства события можно установить или изменить с помощью SQL-команд. Эти свойства включают имя события, время выполнения, сохранение (т.е., сохраняется ли оно после истечения расписания), статус (активно или неактивно), выполняемое действие и схему, к которой оно присвоено. См. раздел 15.1.3 «Команда ALTER EVENT».
По умолчанию определяем события, это пользователь, который создал событие, за исключением случаев, когда событие было изменено, в этом случае определяющий — пользователь, который выполнил последнюю команду
ALTER EVENTдля этого события. Любой пользователь, имеющий привилегиюEVENTдля базы данных, в которой определено событие, может изменить событие. См. раздел 27.5.6 «Планировщик событий и привилегии MySQL». Действие события может включать большинство SQL-команд, разрешённых в хранимых процедурах. Ограничения см. в разделе 27.9 «Ограничения на хранимые программы».
© 2025 Oracle
Licensed under the GPLv2 License.