====== 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 chaque jour 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.
En quoi ces événements peuvent-ils être utiles dans une vraie entreprise ?