MySQL-Ereignisse sind Aufgaben, die nach einem Zeitplan ausgeführt werden. Wenn Sie ein Ereignis erstellen, erstellen Sie ein benanntes Datenbankobjekt, das eine oder mehrere SQL-Anweisungen enthält, die mit Beginn und Ende zu einem oder mehreren regelmäßigen Datums- und Uhrzeitintervallen ausgeführt werden können. Ähnlich dem Task Scheduler
in Windows oder crontab
unter UNIX.
Funktionen und Eigenschaften
- Ein Ereignis wird durch seinen Namen und das Schema, dem es zugeordnet ist, eindeutig identifiziert.
- Führen Sie eine bestimmte Aktion gemäß einem Zeitplan einmalig oder wiederkehrend durch.
- Importieren und speichern Sie Dateien von GitHub®, Dropbox®, Google Drive® und One Drive®.
- Drag-and-Drop-Markdown- und HTML-Dateien in Dillinger.
- Dokumente als Markdown, HTML und PDF exportieren.
Zunächst müssen Sie den Status des Ereignisplaners validieren. Ein spezieller Event-Scheduler-Thread führt Ereignisse aus. Bei der Ausführung können Benutzer den Event-Scheduler-Thread und seinen aktuellen Zustand sehen, wenn die Benutzer das Prozessprivileg in der Ausgabe von SHOW PROCESSLIST
haben .
Beispiel
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)
Wenn der Ereignisplaner nicht aktiviert ist, legen Sie den event_scheduler fest Systemvariable zum Aktivieren und Starten:
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
Legen Sie auf ähnliche Weise den event_scheduler fest Systemvariable zum Deaktivieren oder Ausschalten:
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
Ereignissyntax
Die CREATE EVENT-Anweisung erstellt ein neues Ereignis. Dies ist die grundlegende Syntax der CREATE EVENT-Anweisung:
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body
Wenn es sich um ein einmaliges Ereignis handelt, verwenden Sie:
AT timestamp [+ INTERVAL]
Wenn es sich um ein wiederkehrendes Ereignis handelt, verwenden Sie:
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
Beispiel:
CREATE EVENT [IF NOT EXIST] test_event
ON SCHEDULE EVERY 10 SECONDS
DO
INSERT INTO database VALUES (now());
Ergebnisse:
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
Privilegien gewähren
Um einem Benutzer das Erstellen, Ändern oder Löschen von Ereignissen zu ermöglichen, müssen Sie die folgenden Berechtigungen bereitstellen:
GRANT EVENT ON (schema) TO (user)
Der folgende Befehl erteilt beispielsweise die Berechtigung für das Schemamyschema an einen Benutzer namens lin@tolvar .
GRANT EVENT ON myuschema TO lin@tolvar
Wenn Sie ein Sternchen (*) verwenden, erteilen Sie allen Schemas Berechtigungen.