Les événements MySQL sont des tâches qui s'exécutent selon un calendrier. Lorsque vous créez un événement, vous créez un objet de base de données nommé qui contient une ou plusieurs instructions SQL prêtes à être exécutées, au début et à la fin, à un ou plusieurs intervalles réguliers de date et d'heure. Semblable au Task Scheduler
sous Windowsou crontab
sous UNIX.
Caractéristiques et propriétés
- Un événement est identifié de manière unique par son nom et le schéma auquel il est affecté.
- Effectuer une action spécifique selon un calendrier ponctuel ou récurrent.
- Importez et enregistrez des fichiers depuis GitHub®, Dropbox®, Google Drive® et One Drive®.
- Faites glisser et déposez les fichiers Markdown et HTML dans Dillinger.
- Exportez des documents au format Markdown, HTML et PDF.
Tout d'abord, vous devez valider le statut du statut Event Scheduler. Un thread de planificateur d'événements spécial exécute des événements. Lors de l'exécution, les utilisateurs peuvent voir le thread du planificateur d'événements et son état actuel si les utilisateurs ont le privilège de processus dans la sortie de SHOW PROCESSLIST
.
Exemple
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 2
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 3
State: Waiting for next activation
Info: NULL
2 rows in set (0.00 sec)
Si le planificateur d'événements n'est pas activé, définissez le event_scheduler variable système pour l'activer et le démarrer :
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
De même, définissez le event_scheduler variable système pour la désactiver ou l'éteindre :
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
Syntaxe de l'événement
L'instruction CREATE EVENT crée un nouvel événement. Voici la syntaxe de base de l'instruction CREATE EVENT :
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body
Si l'événement est un événement ponctuel, utilisez :
AT timestamp [+ INTERVAL]
Si l'événement est un événement récurrent, utilisez :
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
Exemple :
CREATE EVENT [IF NOT EXIST] test_event
ON SCHEDULE EVERY 10 SECONDS
DO
INSERT INTO database VALUES (now());
Résultats :
1 2021-02-23 15:44:05
2 2021-02-23 15:44:15
3 2021-02-23 15:44:25
4 2021-02-23 15:44:35
5 2021-02-23 15:44:45
6 2021-02-23 15:44:55
7 2021-02-23 15:45:05
8 2021-02-23 15:45:15
9 2021-02-23 15:45:25
10 2021-02-23 15:45:35
Accorder des privilèges
Pour autoriser un utilisateur à créer, modifier ou supprimer des événements, vous devez fournir des privilèges :
GRANT EVENT ON (schema) TO (user)
Par exemple, la commande suivante accorde l'autorisation pour le schémamyschema à un utilisateur appelé lin@tolvar .
GRANT EVENT ON myuschema TO lin@tolvar
Si vous utilisez un astérisque (*), vous accordez des autorisations à tous les schémas.