Gli eventi MySQL sono attività che vengono eseguite in base a una pianificazione. Quando si crea un evento, si crea un oggetto database denominato che contiene una o più istruzioni SQL pronte per essere eseguite, all'inizio e alla fine, a uno o più intervalli regolari di data e ora. Simile al Task Scheduler
in Windows o crontab
in UNIX.
Caratteristiche e proprietà
- Un evento è identificato in modo univoco dal suo nome e dallo schema a cui è assegnato.
- Esegui un'azione specifica in base a una pianificazione una sola volta o ricorrente.
- Importa e salva file da GitHub®, Dropbox®, Google Drive® e One Drive®.
- Trascina e rilascia markdown e file HTML in Dillinger.
- Esporta documenti come Markdown, HTML e PDF.
Prima di tutto, devi convalidare lo stato dello stato di Event Scheduler. Un thread specialevent scheduler esegue gli eventi. Durante l'esecuzione, gli utenti possono vedere il thread di pianificazione eventi e il suo stato corrente se gli utenti hanno il privilegio di processo nell'output di SHOW PROCESSLIST
.
Esempio
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)
Se l'utilità di pianificazione degli eventi non è abilitata, imposta event_scheduler systemvariable per abilitarlo e avviarlo:
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
Allo stesso modo, imposta il programmatore di eventi variabile di sistema per disabilitarla o disattivarla:
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
Sintassi dell'evento
L'istruzione CREATE EVENT crea un nuovo evento. Questa è la sintassi di base dell'istruzione CREATE EVENT:
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body
Se l'evento è un evento occasionale, utilizzare:
AT timestamp [+ INTERVAL]
Se l'evento è ricorrente, utilizza:
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
Esempio:
CREATE EVENT [IF NOT EXIST] test_event
ON SCHEDULE EVERY 10 SECONDS
DO
INSERT INTO database VALUES (now());
Risultati:
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
Concedi i privilegi
Per consentire a un utente di creare, modificare o eliminare eventi, devi fornire i privilegi:
GRANT EVENT ON (schema) TO (user)
Ad esempio, il comando seguente concede l'autorizzazione per lo schemamyschema a un utente chiamato lin@tolvar .
GRANT EVENT ON myuschema TO lin@tolvar
Se utilizzi un asterisco (*), concedi le autorizzazioni a tutti gli schemi.