MySQL/MariaDB-tapahtumat ovat tietokantaobjekteja, jotka sisältävät SQL-käskyjä, jotka suoritetaan myöhemmin joko säännöllisesti tai kerran. Pohjimmiltaan se on kuin crontab, joka suoritetaan suoraan tietokantapalvelimella. Tästä on hyötyä esimerkiksi vanhojen tietojen arkistointiin tai lokien poistamiseen.
Tapahtuman etuoikeus
Ennen uuden tapahtuman lisäämistä on tarpeen tarkistaa, onko tietokannan käyttäjällä Tapahtuma-oikeus. Jos Tapahtuma-oikeus on olemassa, Tapahtumat-valikkokohta näkyy phpMyAdminissa. Jos valikkokohta puuttuu, käyttäjällä ei ole tapahtuman oikeuksia.
Tapahtuman lisääminen
Helpoin tapa lisätä tapahtumia on käyttää phpMyAdmin-sovellusta. Valitse Events-välilehden Add event -linkki. Avautuvassa ikkunassa sinun on täytettävä:
Yllä olevassa esimerkissä on lisätty toistuva tapahtuma (Tapahtuman tyyppi: RECURRING), joka käynnistyy kerran viikossa. Jos valitset tyypin ONE TIME, kysely suoritetaan vain kerran määritettynä aloitusaikana.
Voit halutessasi asettaa tapahtumalle aikavälin. Voit tehdä tämän täyttämällä sekä alkamis- että päättymisajan.
“Säilyttäessä” -valintaruudun valinta tarkoittaa, että tapahtuman tehtävien suorittamisen jälkeen kysely pysyy ennallaan, joten sitä voidaan muokata ja käyttää uudelleen tulevaisuudessa.
Tapahtuman käytöstä poistaminen
MySQL/MariaDB-tapahtumat saa myös pois päältä, jos et enää halua säännöllisen kyselyn suoritettavan, voit muuttaa sen tilaksi DISABLED tai poistaa koko tapahtuman.
Poistokyselyn luominen
Oikean poistokyselyn laatimiseksi sinun on analysoitava taulukon rakenne nähdäksesi, kuinka lisäysaika on tallennettu. Tyypillisesti käytetään UNIX TIMESTAMP- tai DATETIME-tyyppisiä kenttiä. Yllä oleva esimerkki toimii DATETIME -tyypin rivien poistamiseen. Jos haluat poistaa rivejä UNIX TIMESTAMP -tyypin kanssa, yksinkertaisin tapa on kertoa sekunnit halutulla poistopäivien määrällä ja vähentää se UNIX -aikaleiman numerosta.
Esimerkiksi rivit, jotka ovat 30 päivää tai vanhemmat, voidaan poistaa seuraavasti:
SELECT * FROM `errors` WHERE `unix_t` < UNIX_TIMESTAMP() - (60 * 60 * 24 * 30);
Ennen DELETE-kyselyn suorittamista on aina suositeltavaa käyttää SELECT-kyselyä nähdäksesi, mitkä rivit on valittu WHERE -lauseella. Jos oikeat rivit on valittu, vaihda SELECT arvolla DELETE.
Lisätietoja löytyy virallisesta MariaDB-dokumentaatiosta.