1. Esileht
  2. Tehniline
  3. MariaDB / MySQL
  4. MySQL/MariaDB sündmused (events)

MySQL/MariaDB sündmused (events)

Ülevaade

Sündmusteks (i.k. Events) kutsutakse andmebaasi objekte, mis sisaldavad SQL laused, mida käivitatakse hiljem kas regulaarselt või ühekordselt. Sisuliselt on tegemist crontab-ga, mis täidetakse otse andmebaasi serveris. Kasulik on see näiteks vanemate andmete arhiveerimiseks, logide kustutamiseks jms.

Event privileeg

Enne uue sündmuse lisamist tuleb kontrollida, et andmebaasi kasutajal on lubatud Event privileeg. Kui Event privileeg on olemas, siis tekib phpMyAdmin-i Sündmused (ik. Events) menüüpunkt. Kui menüüpunkt puudub, siis kasutaja Event õigusi ei ole.

Sündmuse lisamine

Sündmuseid on kõige lihtsam lisada kasutades phpMyAdmin rakendust. Valides Sündmuste tabi all “Lisa sündmus” linki. Avanevas aknas tuleb ära täita:

Ülevalolevas näites lisatakse perioodiline sündmus (Sündmuse tüüp RECURRING), mis käivitatakse kord nädalas. Kui valida tüüp ONE TIME, siis käivitatakse päring Algusajal etteantud ajal vaid ühe korra.

Sündmusele on võimalik soovi korral määrata ka ajavahemik, millal seda päringut käivitatakse. Selleks tuleb täita nii Algus kui Lõpp aeg.

Lõpetamisel säilita linnuke tähendab seda, et peale sündmuse tööde lõppu, jääb päring alles, mida saab tulevikus uuesti muuta ja taaskasutada.

Soovitus

Enne sündmuse lisamist testige päringut, et see oleks korrektne ja teeks täpselt seda, mida vaja!

Sündmuse deaktiveerimine

Kui Te ei soovi, et perioodilist päringut enam ei käivitataks on võimalik selle olek muuta DISABLED või kogu sündmuse töö kustutada.

Kustutamise päringu koostamine

Selleks, et koostada korrektne kustutamise päring tuleb analüüsida tabeli struktuuri, et näha kuidas on salvestatud rea lisamise aeg. Üldjuhul on kasutusel UNIX TIMESTAMP või DATETIME tüüpi aja väljad. Ülevalolev näide töötab DATETIME tüüpi ridade kustutamisel. Kui soovite kustutada UNIX TIMESTAMP tüüpi ridu, siis on kõige lihtsam korrutada sekundid soovitud kustutamise päevade arvuga ja lahutada see unix timestamp numbrist.

Näiteks 30 päeva ja vanemad read saab nii:

SELECT * FROM `errors` WHERE `unix_t` < UNIX_TIMESTAMP() - (60 * 60 * 24 * 30);

Enne DELETE päringu käivitamist on alati soovitav SELECT päringuga vaadata, mis päringud WHERE-ga valitakse. Kui valitakse õiged, siis alles asendage SELECT DELETE-ga.

Rohkem infot leiab ametlikust MariaDB dokumentatsioonist.

Viimati muudetud 2. jaan. 2019

Kas sellest artiklist oli abi?

Artiklid samal teemal