Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
site:enseignement:licence:2i009:tme_triggers [19/03/2019 15:22] amann |
site:enseignement:licence:2i009:tme_triggers [15/04/2019 19:24] (Version actuelle) amann [Rappel PL/SQL] |
||
---|---|---|---|
Ligne 64: | Ligne 64: | ||
</code> | </code> | ||
- | Le code d'une exception utilisateur doit être compris entre -20999 et 20000. | + | Le code d'une exception utilisateur doit être compris entre -20999 et -20000. |
** Limitations : ** | ** Limitations : ** | ||
Ligne 111: | Ligne 111: | ||
==== Question 1 ==== | ==== Question 1 ==== | ||
- | Créer un trigger qui assure que les valeurs des attributs NIVEAU et CODEUE, entrées dans la table TD, soient en majuscules, quelle que soit la casse utilisée lors des instructions d’insertion ou de mise à jour (utilisez la fonction UPPER). | + | Créer deux triggers qui assurent que les valeurs des attributs NIVEAU et CODEUE, entrées dans la table TD et INSCRIPTION, soient en majuscules, quelle que soit la casse utilisée dans les instructions d’insertion ou de mise à jour (utilisez la fonction UPPER). Vérifiez si les triggers sont corrects. |
==== Question 2 ==== | ==== Question 2 ==== | ||
Créez un trigger qui empêche qu'un étudiant s'inscrive dans plus que 6 UEs. | Créez un trigger qui empêche qu'un étudiant s'inscrive dans plus que 6 UEs. | ||
Ligne 117: | Ligne 117: | ||
Créez un trigger qui empêche que le nombre de groupes de TD par UE dépasse 4. | Créez un trigger qui empêche que le nombre de groupes de TD par UE dépasse 4. | ||
==== Question 4 ==== | ==== Question 4 ==== | ||
- | Créez un trigger qui empêche le nombre d'étudiants dans chaque groupe de dépasser 32. | + | Créez un trigger qui empêche qu’un étudiant suive deux TDs enseignés par le même enseignant. |
==== Question 5 ==== | ==== Question 5 ==== | ||
Pour empêcher un étudiant de s’inscrire à des TD incompatibles (i.e. ayant lieu en même temps), on introduit une nouvelle contrainte d’intégrité dans la base : un étudiant ne peut pas avoir deux inscriptions qui lui imposent d’être, au même moment, à deux endroits différents. | Pour empêcher un étudiant de s’inscrire à des TD incompatibles (i.e. ayant lieu en même temps), on introduit une nouvelle contrainte d’intégrité dans la base : un étudiant ne peut pas avoir deux inscriptions qui lui imposent d’être, au même moment, à deux endroits différents. | ||
Ligne 131: | Ligne 131: | ||
</code> | </code> | ||
* si l’étudiant a déjà pris une inscription correspondant au même jour et à la même heure, la contrainte de table précédente provoque le rejet du nouveau quadruplet (NoETUDIANT, JOUR, HEURE, SALLE), le trigger est arrêté sur erreur, et l’instruction d’insertion d’un nouvel élément dans la table INSCRIPTION est, par suite, arrêtée sur erreur. | * si l’étudiant a déjà pris une inscription correspondant au même jour et à la même heure, la contrainte de table précédente provoque le rejet du nouveau quadruplet (NoETUDIANT, JOUR, HEURE, SALLE), le trigger est arrêté sur erreur, et l’instruction d’insertion d’un nouvel élément dans la table INSCRIPTION est, par suite, arrêtée sur erreur. | ||
+ | |||
+ | ==== Question 6 (optionnel) ==== | ||
+ | Trouvez une solution pour la question précédente qui évite d’introduire la table supplémentaire LOCETUD. Conseil : il faut faire une jointure sur les tables TD et INSCRIPTION. | ||