Table des matières

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);

Question: 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
);

Question: 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
);

Question: 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é

Question: 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).

Attention: Observez les lignes supprimés dans la table logs, les lignes créées dans evenement, notifications, stats_commandes.

Question: En quoi ces événements peuvent-ils être utiles dans une vraie entreprise ?