1. Home
  2. Техническое
  3. MariaDB / MySQL
  4. События MySQL/MariaDB (events)

События MySQL/MariaDB (events)

Обзор

События – это объекты базы данных, содержащие операторы SQL, которые впоследствии выполняются либо периодически, либо однократно. По сути, это кронтабы, которые выполняются непосредственно на сервере базы данных. Это полезно для архивирования старых данных, удаления журналов и т. д.

Привилегия события

Перед добавлением нового события необходимо убедиться, что у пользователя базы данных включена привилегия Событий. Если привилегия Событий включена, появится пункт меню phpMyAdmin События. Если пункт меню отсутствует, значит, у пользователя нет привилегий.

Добавление события

Самый простой способ добавить события – воспользоваться приложением phpMyAdmin. Выберите ссылку “Создать новое событие” на вкладке “События”. В появившемся окне вам нужно будет заполнить:

В приведенном примере добавлено периодическое событие (тип события RECURRING), которое срабатывает раз в неделю. Если выбран тип ONE TIME, запрос будет запущен только один раз в течение времени запуска.
Также при желании можно указать период времени, в течение которого будет выполняться данный запрос. Для этого необходимо заполнить поля “Начало” и “Конец”.
Галочка “Сохранить при окончании” означает, что после завершения события запрос будет сохранен и может быть изменен и повторно использован в будущем.

Совет

Прежде чем добавлять событие, проверьте запрос, чтобы убедиться, что он корректен и выполняет именно то, что вам нужно!

Деактивация события

Если вы больше не хотите, чтобы периодический запрос выполнялся, можно изменить его статус на DISABLED или удалить все событие.

Создание запроса на удаление

Чтобы сгенерировать корректный запрос на удаление, необходимо проанализировать структуру таблицы и выяснить, как записывается время вставки строки. Обычно используются временные поля типа UNIX TIMESTAMP или DATETIME. Приведенный выше пример работает для удаления строк типа DATETIME. Если вы хотите удалить строки типа UNIX TIMESTAMP, самый простой способ – умножить секунды на количество дней, которые вы хотите удалить, и вычесть это из числа UNIX TIMESTAMP.

Например, 30 дней и более старые строки могут быть такими:

SELECT * FROM `errors` WHERE `unix_t` < UNIX_TIMESTAMP() - (60 * 60 * 24 * 30);

Перед выполнением запроса DELETE всегда полезно использовать запрос SELECT, чтобы посмотреть, какие запросы будут выбраны по WHERE. Если выбраны правильные, только тогда замените SELECT на DELETE.

Более подробную информацию можно найти в официальной документации по MariaDB.

Updated on 5. Apr 2024
Was this article helpful?

Related Articles