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:3i009:tme_triggers [28/08/2017 12:04] amann |
site:enseignement:licence:3i009:tme_triggers [11/12/2018 09:29] (Version actuelle) hubert [Travail à faire] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{indexmenu_n>11}} | {{indexmenu_n>11}} | ||
- | ====== TME 10 Triggers ====== | + | ====== TME 11-a Triggers ====== |
Sous Oracle, le bloc d’instructions d’un trigger est un bloc PL/SQL. | Sous Oracle, le bloc d’instructions d’un trigger est un bloc PL/SQL. | ||
Dans ce TME nous allons utiliser un sous-ensemble minimal de PL/SQL pour définir et modifier des variables | Dans ce TME nous allons utiliser un sous-ensemble minimal de PL/SQL pour définir et modifier des variables | ||
Ligne 63: | Ligne 63: | ||
RAISE_APPLICATION_ERROR(code,'message') ; | RAISE_APPLICATION_ERROR(code,'message') ; | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | ** Limitations : ** | ||
+ | Un trigger AFTER déchenché après un update (ou un insert) de la table T n'est pas autorisé à modifier la table T (ne pas écrire d'instruction ''update T'' dans le corps du trigger). Pour palier cette limitation, utiliser un trigger BEFORE. | ||
+ | |||
+ | |||
======= Travail à faire ======= | ======= Travail à faire ======= | ||
Ligne 84: | Ligne 90: | ||
DROP TABLE INSCRIPTION; | DROP TABLE INSCRIPTION; | ||
CREATE TABLE INSCRIPTION ( | CREATE TABLE INSCRIPTION ( | ||
- | noEtudiant smallint, | + | noEtud smallint, |
noTD smallint, | noTD smallint, | ||
codeUE varchar(10), | codeUE varchar(10), | ||
- | PRIMARY KEY (noEtudiant, codeUE)) ; | + | PRIMARY KEY (noEtud, codeUE)) ; |
</code> | </code> | ||
Ligne 93: | Ligne 99: | ||
({{:site:enseignement:licence:3i009:tme_7_schema.sql|}}) | ({{:site:enseignement:licence:3i009:tme_7_schema.sql|}}) | ||
- | La clé primaire de relation TD est (noTD, codeUE) et celle de la ralation INSCRIPTION est (noEtud, codeUE). | + | La clé primaire de relation TD est (noTD, codeUE) et celle de la relation INSCRIPTION est (noEtud, codeUE). |
Chaque n-uplet de la relation TD renseigne sur un TD d’une UE donnée, pour un niveau donné. (ex. le TD 2 de l'UE BD2 du niveau L3). Les TD ont lieu au rythme d’une fois par semaine, pendant toute l’année universitaire. | Chaque n-uplet de la relation TD renseigne sur un TD d’une UE donnée, pour un niveau donné. (ex. le TD 2 de l'UE BD2 du niveau L3). Les TD ont lieu au rythme d’une fois par semaine, pendant toute l’année universitaire. | ||
Les attributs SALLE, JOUR et HEURE donnent le lieu, le jour et l’horaire de début du TD. | Les attributs SALLE, JOUR et HEURE donnent le lieu, le jour et l’horaire de début du TD. |