Le programmateur d’événements ( Event Scheduler ) (part 4/6)
Quelques exemples d’évènements
Insertions de données dans une table, toutes les 30 secondes
mysql> SELECT * FROM _event.insert_event ; mysql> DELIMITER €€ mysql> CREATE EVENT `_event`.`second_event` ON SCHEDULE EVERY 30 SECOND DO BEGIN /*selectionne la val maximale de la colonne fois. Si elle vaut NULL alors retourne la valeur 0 dans la variable @fois*/ SELECT if(max(fois),max(fois)+1,1) INTO @fois FROM _event.insert_event; /*Insertion des données dans la table*/ INSERT INTO _event.insert_event (moment, fois, action) VALUES (now(), @fois, concat(‘Execution ‘, @fois, » de l’event »)); END €€ mysql> DELIMITER ;
Créer une vue matérialisée
Le concept de vue matérialisée n’est pas implémenté dans MySQL. Une vue matérialisée est un « snapshot ». Ce type de vue permet de stocker le résultat d’une requête, contrairement aux vues classiques qui elles, ne stockent que la définition de la requête. Les vues matérialisées ne réexecutent donc pas la requête à chaque interrogation. Par contre la gestion de la fraîcheur des données est à la charge de la vue.
mysql> DELIMITER €€ mysql> CREATE EVENT `_event`.`vue_materialisee` ON SCHEDULE EVERY 10 SECOND STARTS ‘2008-03-11 16:32:34’ ON COMPLETION NOT PRESERVE ENABLE DO BEGIN /*Effacement de la table _event.City_fra */ TRUNCATE TABLE _event.City_fra; /*Remplassiage de la table _event.City_fra à partir de la table _event.City*/ INSERT INTO _event.City_fra SELECT * FROM _event.City WHERE CountryCode=’FRA’ ORDER BY name; END €€ mysql> DELIMITER ;
A noter que les commandes TRUNCATE et INSERT ne sont pas atomiques. Il est donc possible qu’une interrogation sur la table _event.City_fra ne renvoie pas de résultat.
(à suivre… event scheduler: Appel d’une procédure stockée)
Architecte Solution Cloud chez Oracle
MySQL Geek, Architecte, DBA, Consultant, Formateur, Auteur, Blogueur et Conférencier.
—–
Blog: www.dasini.net/blog/en/
Twitter: https://twitter.com/freshdaz
SlideShare: www.slideshare.net/freshdaz
Youtube: https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
—–