Table des matières

Voir cette page sous forme de diaporama.

D4-C03 : Première approche de la programmation au sein d’un SGBD - La gestion d'événements en SQL

On peut utiliser un langage de programmation associé à un SGBD, la programmation d’événements (events) en est une illustration. Elle permet de planifier dans le temps l'exécution d'un traitement à renouveler éventuellement de façon périodique.

Objectifs

Les formats de dates avec MariaDB

MariaDB propose plusieurs types de données pour gérer les dates et heures :

Manipuler les dates

Quelques fonctions utiles :

Exemples avec des valeurs de dates précises :

Exercices sur les dates

Gestion commerciale

schéma bd

  1. Quels clients ont acheté un produit l'année dernière ?
  2. Quels clients ont acheté un produit depuis moins de 180 jours ?
  3. Quels clients n'ont rien acheté ce mois-ci ?
  4. Trouver tous les achats réalisés au cours des 30 derniers jours.
  5. Calculer combien de jours se sont écoulés depuis la dernière commande de chaque client.

Indépendamment de la base précédente :

  1. Écrire une requête qui ajoute 6 mois à la date actuelle.
  2. Afficher la date du premier jour du mois précédent (Par exemple, si nous sommes le 20 mars 2017, la requête doit afficher 1er février 2017 - cette réponse est éligible à la qualité de réponse parfaite si elle fonctionne même en janvier)
  3. Afficher la date du prochain jeudi (le langage SQL peut utiliser des structures conditionnelles, effectuez des recherches !)

La programmation d’événements

La programmation d’événements (events) permet de planifier dans le temps l'exécution d'un traitement à renouveler éventuellement de façon périodique. Ils nécessitent que le planificateur d’événements (event_scheduler) soit activé.

Utilité

Voici quelques exemples de tâches que vous pourrez mettre en œuvre, sans avoir à passer par des artifices de programmation de plus ou moins bonnes qualités. Vous pourrez, par exemple :

Prérequis

Attention:

  • Le programmateur d’événements (event scheduler) doit être actif
  • L'utilisateur doit avoir le privilège SUPER (au niveau global) pour avoir l'autorisation d'exécuter des commandes d'administration et de débogage.
  • Pour définir un événement dans une base, l'utilisateur doit avoir le privilège EVENT.

Vérification : SHOW VARIABLES LIKE 'event_scheduler';

Activation : SET GLOBAL event_scheduler = ON;

Syntaxe de création d’un événement

CREATE EVENT [IF NOT EXISTS] [nom_base].nom_evenement
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE]
    [COMMENT 'commentaire']
    DO instructions_sql;
=====  =====
--Exemple
CREATE EVENT nom_evenement
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP
DO
   instruction_sql;

schedule précise la planification (instant initial, période, instant final) selon le modèle suivant :

Exemple de planification (schedule)

clause ON SCHEDULE l'événement s'exécute … (à compléter)
1 AT '2019-10-2 10:59:00'
2 AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
3 AT CURRENT_TIMESTAMP + INTERVAL 3 WEEK + INTERVAL 2 DAY
4 EVERY 1 DAY STARTS '2019-10-2 4:00:00'
5 EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + INTERVAL 1 WEEK
6 EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK

Activité

A04