MySQL i “eventi”

Vrlo zgodna mogučnost MySQL-a su ‘events’ odnosno radnje koje može aktivirati u točno određeno vrijeme. Prikazat ću vam jednostavan primjer eventa koji se pokreće svakih 5 sekundi i aktivira stored proceduru koja povećava vrijednost broja za svaki poziv. Uglavno primjer klasičnog brojača.

 

Event’s moraju biti upaljeni sa strane servera , a možete ih i ručno upaliti naredbom:

set global event_scheduler=1

Ova se vrijednost poništava prilikom restartanja servera koja je postavljena na 0 (nula), ako želite trajno postaviti vrijednost morate imati administratorska prava i u konfiguracijskoj datoteci /etc/mysql/my.cnf pronađite [mysqld] i ispod dodajte:

event_scheduler=on

Podešavanje servera je gotovo (potreban reload ili restart servera), sad napravite neku jednostavnu tablicu na serveru:

CREATE TABLE `test` (
`broj` BIGINT(20) UNSIGNED NULL DEFAULT NULL
)
COLLATE=’utf8_general_ci’
ENGINE=MyISAM
ROW_FORMAT=DEFAULT

Naparavimo stored proceduru:

CREATE DEFINER=`user`@`%` PROCEDURE `brojac`()
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT ”
BEGIN
DECLARE total_count DECIMAL(16);

select broj INTO total_count from test;
update test set broj=total_count+1;

END

I na kraju napravimo jednostavni event:

CREATE EVENT `myevent` ON SCHEDULE
EVERY 5 SECOND STARTS ’2011-11-22 00:00:00′ ENDS ’2012-11-22 00:00:00′
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ”
DO CALL brojac()

Kratko i jasno :-)

 

Leave a Reply

Vaša adresa e-pošte neće biti objavljena. Nužna polja su označena s *

In an effort to prevent automatic filling, you should perform a task displayed below.