Události MySQL jsou úlohy, které běží podle plánu. Když vytvoříte událost, vytvoříte pojmenovaný databázový objekt, který obsahuje jeden nebo více příkazů SQL připravených ke spuštění, začátek a konec, v jednom nebo více pravidelných intervalech data a času. Podobné jako Task Scheduler
ve Windows nebo crontab
v UNIXu.
Funkce a vlastnosti
- Událost je jednoznačně identifikována svým názvem a schématem, ke kterému je přiřazena.
- Proveďte konkrétní akci podle plánu jednorázově nebo opakovaně.
- Importujte a ukládejte soubory z GitHub®, Dropbox®, Google Drive® a One Drive®.
- Přetáhněte soubory značek a HTML do Dillinger.
- Exportujte dokumenty jako Markdown, HTML a PDF.
Nejprve musíte ověřit stav stavu Plánovače událostí. Vlákno plánovače speciálních událostí spouští události. Při spuštění mohou uživatelé vidět vlákno plánovače událostí a jeho aktuální stav, pokud mají uživatelé oprávnění procesu ve výstupu SHOW PROCESSLIST
.
Příklad
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)
Pokud není plánovač událostí povolen, nastavte event_scheduler systemvariable pro její aktivaci a spuštění:
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
Podobně nastavte event_scheduler systémová proměnná pro deaktivaci nebo vypnutí:
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
Syntaxe události
Příkaz CREATE EVENT vytvoří novou událost. Toto je základní syntaxe příkazu CREATE EVENT:
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body
Pokud je událost jednorázová, použijte:
AT timestamp [+ INTERVAL]
Pokud je událost opakující se, použijte:
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
Příklad:
CREATE EVENT [IF NOT EXIST] test_event
ON SCHEDULE EVERY 10 SECONDS
DO
INSERT INTO database VALUES (now());
Výsledky:
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
Udělit oprávnění
Chcete-li uživateli umožnit vytvářet, upravovat nebo mazat události, musíte mu poskytnout oprávnění:
GRANT EVENT ON (schema) TO (user)
Například následující příkaz uděluje oprávnění pro schémamyschema uživateli s názvem lin@tolvar .
GRANT EVENT ON myuschema TO lin@tolvar
Pokud použijete hvězdičku (*), udělujete oprávnění všem schématům.