Exercice 7 - Création de déclencheurs
Préparation
Importez le script SQL ex07_create_tables.sql disponible ici pour préparer votre environnement de base de données.
Instructions pour les déclencheurs
Question #1 : Suivi des modifications
Créez un déclencheur qui enregistre chaque modification dans la table resultats
dans une table de journalisation resultats_log
. Les détails à enregistrer dépendent du type d'opération effectuée :
Type d'opération | Colonne operation |
Colonne ancien_resultat |
Colonne nouveau_resultat |
Colonne resultat_id |
Colonne date_operation |
---|---|---|---|---|---|
Insertion | "insert" | null | new.resultat_ms |
new.id |
Date actuelle |
Mise à jour | "update" | old.resultat_ms |
new.resultat_ms |
new.id |
Date actuelle |
Suppression | "delete" | old.resultat_ms |
null | old.id |
Date actuelle |
Note : Pour les mises à jour, enregistrez les changements uniquement si la colonne resultat_ms
est modifiée.
Question #2 : Validation à l'insertion
Implémentez un déclencheur pour valider que l'identifiant de l'utilisateur (cree_par
) qui insère un nouveau résultat existe dans la table usagers
. Si l'identifiant n'est pas valide, la requête INSERT doit être bloquée et un message d'erreur retourné.
Question #3 : Validation à la modification
Appliquez la même validation que dans la Question #2 pour les modifications, mais vérifiez la colonne modifie_par
lors de la mise à jour d'un résultat.
Question #4 : Gestion des doublons de descriptions
Avant l'insertion ou la modification d'une description dans la table epreuves_types
, assurez-vous que la description n'est pas déjà utilisée. Si elle l'est, ajoutez un suffixe numérique entre parenthèses, qui correspond au nombre de fois que la description est déjà présente moins un. Par exemple, si "Marathon" est déjà utilisé, la nouvelle valeur à insérer ou à modifier sera "Marathon (1)".
Livrables
Soumettez les requêtes SQL des déclencheurs créés, ainsi que des exemples de requêtes qui démontrent leur fonctionnement correct, dans un script SQL.