mysql

in mysql

Membuat Events Scheduler di MySQL

membuat events scheduler di MySQL

Events scheduler layaknya seperti cron job yang bertugas melakukan penjadwalan suatu tugas, tugas yang dimaksud seperti melakukan query tertentu seperti select,insert,update atau delete dan seperti cron job kita juga bisa mengatur kapan akan dilakukan tugas tersebut, events scheduler bisa menjadi alternatif bagi user yang tidak punya akses penuh kepada terhadap servernya, daripada menggunakan cron job, kita bisa menggunakan event.

Membuat Event

untuk membuat event, kita jalankan query seperti berikut :

CREATE EVENT “NAMA_EVENT” ON SCHEDULE waktu_schedule

DO BEGIN

//query anda

END;

untuk waktu_schedule bisa dalam bentuk format seperti berikut :

  1. AT ‘YYYY-MM-DD HH:MM.SS’ jika kita ingin menjalankannya pada suatu waktu dan hanya satu kali itu saja
    contoh :

    CREATE EVENT “backup_db” ON SCHEDULE AT “2017-12-31 23:00:00”

  2. kita juga bisa melakukan event dengan waktu perhitungan setelah waktu tertentu, contoh jika ingin melakukan penjadwalan “backup_db” 1 jam setelah waktu saat ini

    CREATE EVENT “backup_db” ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR

    perintah berikut akan melakukan penjadwalan 1 hari setelah waktu saat ini

    CREATE EVENT “backup_db” ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY

    perintah berikut akan melakukan penjadwalan 4 minggu setelah waktu saat ini

    CREATE EVENT “backup_db” ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 4 WEEK

    perintah berikut akan melakukan penjadwalan 1 bulan setelah waktu saat ini

    CREATE EVENT “backup_db” ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MONTH

  3. untuk menjalankan event pada setiap waktu tertentu, gunakan : EVERY n [HOUR|MONTH|WEEK|DAY|MINUTE]
    contoh :

    CREATE EVENT “backup_db” ON SCHEDULE EVERY 1 DAY

    contoh diatas akan menjalankan event setiap hari nya

berikut adalah contoh query pembuatan event (diambil dari website mysql):

delimiter |

CREATE EVENT e_daily
ON SCHEDULE
EVERY 1 DAY
COMMENT ‘Saves total number of sessions then clears the table each day’
DO
BEGIN
INSERT INTO site_activity.totals (time, total)
SELECT CURRENT_TIMESTAMP, COUNT(*)
FROM site_activity.sessions;
DELETE FROM site_activity.sessions;
END |

delimiter ;