Ceci est une ancienne révision du document !
D4-TP01 : Gestion d'événements en SQL
A) Nettoyage automatique des logs
Créer une table logs pour tracer les logs :
DROP TABLE IF EXISTS logs; CREATE TABLE logs ( idLog INT AUTO_INCREMENT PRIMARY KEY, utilisateur VARCHAR(50), date_connexion DATETIME ); INSERT INTO logs (utilisateur, date_connexion) VALUES ('Medhi', NOW() - INTERVAL 5 DAY), ('Emile', NOW() - INTERVAL 40 DAY), ('Steve', NOW() - INTERVAL 15 DAY), ('Morgann', NOW() - INTERVAL 20 DAY), ('Salome', NOW() - INTERVAL 70 DAY);
Créer un événement qui supprime automatiquement les lignes de la table logs de plus de 30 jours.
B) Notification quotidienne
-- Table notifications DROP TABLE IF EXISTS notifications; CREATE TABLE notifications ( idNotif INT AUTO_INCREMENT PRIMARY KEY, message VARCHAR(100), dateNotif DATETIME DEFAULT CURRENT_TIMESTAMP );
Créer un événement qui insère chaque jour à 8h un message 'Notification quotidienne' dans une table notifications.
C) Calcul périodique de statistiques
-- Table commandes DROP TABLE IF EXISTS commandes; CREATE TABLE commandes ( idCommande INT AUTO_INCREMENT PRIMARY KEY, client VARCHAR(50), dateCommande DATE ); INSERT INTO commandes (client, dateCommande) VALUES ('alice', NOW() - INTERVAL 3 DAY), ('bob', NOW() - INTERVAL 10 DAY), ('charlie', NOW() - INTERVAL 25 DAY), ('alice', NOW() - INTERVAL 40 DAY), ('bob', NOW() - INTERVAL 50 DAY), ('charlie', NOW() - INTERVAL 70 DAY), ('alice', NOW() - INTERVAL 85 DAY); -- Table stats_commandes DROP TABLE IF EXISTS stats_commandes; CREATE TABLE stats_commandes ( idStat INT AUTO_INCREMENT PRIMARY KEY, semaine INT, total INT, dateCalcul DATETIME DEFAULT CURRENT_TIMESTAMP );
Créez un événement qui calcule chaque semaine le nombre total de commandes et insère le résultat dans une table stats_commandes.
D) Traitement différé
Ajouter une ligne dans la table evenement dans 10 minutes.
Étape 4 : Vérification et suivi
SHOW EVENTS; -- lister les événements
Vérifiez leur état (ENABLE / DISABLE).
Observez les lignes supprimés dans la table logs, les lignes créées dans evenement, notifications, stats_commandes.
A Savoir: En quoi ces événements peuvent-ils être utiles dans une vraie entreprise