Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:licence:3i009:tme_triggers

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [21/10/2015 18:59]
amann [Questions]
site:enseignement:licence:3i009:tme_triggers [11/12/2018 09:29] (Version actuelle)
hubert [Travail à faire]
Ligne 1: Ligne 1:
-{{indexmenu_n>​26}}+{{indexmenu_n>​11}}
  
-====== TME 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 45: Ligne 45:
  
 On peut également appliquer des fonctions de conversion pour modifier les valeurs de variables ;​ Par exemple les fonctions UPPER et LOWER transforment leur arguments (des chaînes de caractères) respectivement en majuscule et  minuscule. ​ On peut également appliquer des fonctions de conversion pour modifier les valeurs de variables ;​ Par exemple les fonctions UPPER et LOWER transforment leur arguments (des chaînes de caractères) respectivement en majuscule et  minuscule. ​
-Il est possible d'​utiliser les structures de contrôle ​suivants :+Il est possible d'​utiliser les structures de contrôle ​suivantes :
  
 <code plsql> <code plsql>
Ligne 58: Ligne 58:
 **Exceptions :​** **Exceptions :​**
  
-On ne peut pas annuler une transaction à l'​intérieur d'un trigger mais on put déclencher une exception en utilisant la fonction RAISE_APPLICATION_ERROR (qui peut ensuite être traitée par la procédure qui a déclenchée ​le trigger) :+On ne peut pas annuler une transaction à l'​intérieur d'un trigger mais on peut déclencher une exception en utilisant la fonction RAISE_APPLICATION_ERROR (qui peut ensuite être traitée par la procédure qui a déclenché ​le trigger) :
  
 <code plsql> <code plsql>
 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>​
  
 Exécutez les instructions de création de tables ci-dessus dans le client Oracle (sqlplus). Exécutez les instructions de création de tables ci-dessus dans le client Oracle (sqlplus).
 +({{:​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.
Ligne 107: Ligne 114:
   - 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 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é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. 
 +  - Créez un trigger qui empêche que le nombre de groupes par UE dépasse 4.
 +  - Créez un trigger qui empêche le nombre d'​étudiants dans chaque groupe de dépasser ​ 32.
   - 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.
  
site/enseignement/licence/3i009/tme_triggers.1445446789.txt.gz · Dernière modification: 21/10/2015 18:59 par amann