MySQL Events adalah tugas-tugas yang berjalan sesuai dengan jadwal. Saat Anda membuat acara, Anda membuat objek database bernama yang berisi satu atau lebih pernyataan SQL yang siap dieksekusi, mulai dan berakhir, pada satu atau beberapa interval tanggal dan waktu yang teratur. Mirip dengan Task Scheduler
di Windowsatau crontab
di UNIX.
Fitur dan properti
- Sebuah peristiwa diidentifikasi secara unik berdasarkan namanya dan skema yang ditugaskan padanya.
- Melakukan tindakan tertentu sesuai jadwal satu kali atau berulang.
- Impor dan simpan file dari GitHub®, Dropbox®, Google Drive®, dan One Drive®.
- Tarik dan lepas markdown dan file HTML ke Dillinger.
- Ekspor dokumen sebagai Markdown, HTML, dan PDF.
Pertama-tama, Anda harus memvalidasi status status Penjadwal Acara. Utas penjadwal acara khusus mengeksekusi acara. Saat menjalankan, pengguna dapat melihat utas penjadwal acara dan statusnya saat ini jika pengguna memiliki hak istimewa proses dalam output SHOW PROCESSLIST
.
Contoh
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)
Jika penjadwal acara tidak diaktifkan, setel event_scheduler variabel sistem untuk mengaktifkan dan memulainya:
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
Demikian pula, atur event_scheduler variabel sistem untuk menonaktifkan atau mematikannya:
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
Sintaks peristiwa
Pernyataan CREATE EVENT membuat acara baru. Ini adalah sintaks dasar dari pernyataan CREATE EVENT:
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body
Jika acara tersebut adalah acara satu kali, gunakan:
AT timestamp [+ INTERVAL]
Jika acara tersebut merupakan acara rutin, gunakan:
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
Contoh:
CREATE EVENT [IF NOT EXIST] test_event
ON SCHEDULE EVERY 10 SECONDS
DO
INSERT INTO database VALUES (now());
Hasil:
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
Berikan hak istimewa
Untuk mengizinkan pengguna membuat, memodifikasi, atau menghapus acara, Anda perlu memberikan hak istimewa:
GRANT EVENT ON (schema) TO (user)
Misalnya, perintah berikut memberikan izin untuk skemamyschema ke pengguna bernama lin@tolvar .
GRANT EVENT ON myuschema TO lin@tolvar
Jika Anda menggunakan tanda bintang (*), Anda memberikan izin ke semua skema.