Pārskats
Notikumi ir datubāzes objekti, kas satur SQL vaicājumus, kuri tiek izpildīti vēlāk — vai nu regulāri, vai vienu reizi. Būtībā tas ir kā crontab, kas tiek izpildīts tieši datubāzes serverī. Tas ir noderīgi, piemēram, vecāku datu arhivēšanai vai žurnālu dzēšanai.
Notikumu privilēģija
Pirms jauna notikuma pievienošanas ir jāpārbauda, vai datubāzes lietotājam ir Event privilēģija. Ja Event privilēģija ir piešķirta, phpMyAdmin parādīsies izvēlnes vienums Events. Ja izvēlnes vienuma nav, lietotājam nav Event privilēģiju.
![]()
Notikuma pievienošana
Vienkāršākais veids, kā pievienot notikumus, ir izmantot lietotni phpMyAdmin. Cilnē Events izvēlies saiti “Add Event”. Atvērtajā logā tev jāaizpilda:
Iepriekšējā piemērā ir pievienots periodisks notikums (Event type: RECURRING), kas tiek palaists reizi nedēļā. Ja izvēlies tipu ONE TIME, tad vaicājums tiks izpildīts tikai vienu reizi norādītajā Start laikā.
Pēc izvēles vari iestatīt laika intervālu, kurā notikums tiks izpildīts. Lai to izdarītu, aizpildi gan Start, gan End laiku.
Atzīmējot izvēles rūtiņu “On completion preserve”, pēc notikuma uzdevumu izpildes vaicājums paliek saglabāts, lai to nākotnē varētu rediģēt un izmantot atkārtoti.
Notikuma atspējošana.
Ja vairs nevēlies, lai periodisks vaicājums tiktu izpildīts, vari mainīt tā statusu uz DISABLED vai dzēst visu notikumu.
Dzēšanas vaicājuma izveide
Lai izveidotu pareizu dzēšanas vaicājumu, tev jāanalizē tabulas struktūra, lai saprastu, kā tiek glabāts ievietošanas laiks. Parasti tiek izmantoti UNIX TIMESTAMP vai DATETIME tipa lauki. Iepriekšējais piemērs darbojas rindu dzēšanai ar DATETIME tipu. Ja vēlies dzēst rindas ar UNIX TIMESTAMP tipu, vienkāršākais veids ir reizināt sekundes ar vēlamo dzēšanas dienu skaitu un atņemt to no UNIX timestamp vērtības.
Piemēram, rindas, kas ir 30 dienas vecas vai vecākas, var dzēst šādi:
SELECT * FROM `errors` WHERE `unix_t` < UNIX_TIMESTAMP() - (60 * 60 * 24 * 30);
Pirms DELETE vaicājuma izpildes vienmēr ir ieteicams vispirms izmantot SELECT vaicājumu, lai redzētu, kuras rindas atlasa WHERE nosacījums. Ja tiek atlasītas pareizās rindas, tad aizstāj SELECT ar DELETE.
Papildu informāciju vari atrast oficiālajā MariaDB dokumentācijā.
