1. Home
  2. Tehniline
  3. MariaDB / MySQL / PostgreSQL
  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 see puudub, siis kasutajal Event õigusi ei ole.

Sündmuse lisamine

Sündmuseid on kõige lihtsam lisada kasutades phpMyAdmin rakendust. Vali Sündmuste saki all Lisa sündmus ja täida infoga:

Ü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 ka 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 testi päringut, et see oleks korrektne ja teeks täpselt seda, mida vaja!

Sündmuse deaktiveerimine

Kui sa ei soovi, et perioodilist päringut enam ei käivitataks, siis 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 soovid 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 asenda SELECT DELETE-ga.

Rohkem infot leiab ametlikust MariaDB dokumentatsioonist.

Updated on 10. mai 2024
Was this article helpful?

Related Articles