site:enseignement:licence:3i009:tme_triggers
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| site:enseignement:licence:3i009:tme_triggers [21/10/2015 18:58] – [Questions] amann | site:enseignement:licence:3i009:tme_triggers [09/12/2025 12:30] (Version actuelle) – amann | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{indexmenu_n> | + | {{indexmenu_n> |
| - | ====== TME Triggers ====== | + | ====== TME 10-a Triggers ====== |
| Sous Oracle, le bloc d’instructions d’un trigger est un bloc PL/ | Sous Oracle, le bloc d’instructions d’un trigger est un bloc PL/ | ||
| 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 23: | Ligne 23: | ||
| - | **Variables PL/SQL** | + | **Variables PL/SQL**entre |
| Les variables utilisées dans un bloc PL/SQL doivent être déclarées dans la section DECLARE de ce bloc. | Les variables utilisées dans un bloc PL/SQL doivent être déclarées dans la section DECLARE de ce bloc. | ||
| Ligne 32: | Ligne 32: | ||
| On utilise l’opérateur '': | On utilise l’opérateur '': | ||
| + | <br/> | ||
| Instructions PL/SQL : | Instructions PL/SQL : | ||
| + | <br/> | ||
| Une expression SQL est une instruction PL/SQL. Par exemple, on peut utiliser l' | Une expression SQL est une instruction PL/SQL. Par exemple, on peut utiliser l' | ||
| <code sql> | <code sql> | ||
| - | select Jour, Heure, Salle | + | select Jour, Heure, Salle entre |
| into JourI, HeureI, SalleI | into JourI, HeureI, SalleI | ||
| from TD | from TD | ||
| Ligne 45: | Ligne 45: | ||
| On peut également appliquer des fonctions de conversion pour modifier les valeurs de variables ; | On peut également appliquer des fonctions de conversion pour modifier les valeurs de variables ; | ||
| - | Il est possible d' | + | Il est possible d' |
| <code plsql> | <code plsql> | ||
| Ligne 58: | Ligne 58: | ||
| **Exceptions : | **Exceptions : | ||
| - | On ne peut pas annuler une transaction à l' | + | On ne peut pas annuler une transaction à l' |
| - | <code plsql> | + | <code plsql>entre |
| RAISE_APPLICATION_ERROR(code,' | RAISE_APPLICATION_ERROR(code,' | ||
| </ | </ | ||
| + | |||
| + | Le code doit être dans l' | ||
| + | |||
| + | ** 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' | ||
| + | |||
| + | |||
| ======= Travail à faire ======= | ======= Travail à faire ======= | ||
| Ligne 84: | Ligne 91: | ||
| DROP TABLE INSCRIPTION; | DROP TABLE INSCRIPTION; | ||
| CREATE TABLE INSCRIPTION ( | CREATE TABLE INSCRIPTION ( | ||
| - | noEtudiant | + | noEtud |
| noTD smallint, | noTD smallint, | ||
| | | ||
| - | PRIMARY KEY (noEtudiant, codeUE)) ; | + | PRIMARY KEY (noEtud, codeUE)) ; |
| </ | </ | ||
| 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). | ||
| + | ({{: | ||
| - | La clé primaire de relation TD est (noTD, codeUE) et celle de la ralation | + | La clé primaire de relation TD est (noTD, codeUE) et celle de la relation |
| 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 115: | ||
| - 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' | - Créez un trigger qui empêche qu'un étudiant s' | ||
| - | - Pour empêcher un étudiant de s’inscrire à des TD incompatibles (i.e. ayant lieu en même temps), | + | |
| + | - Créez un trigger qui empêche le nombre d' | ||
| + | | ||
| Ecrire un trigger qui assure cette contrainte, de la façon suivante : | Ecrire un trigger qui assure cette contrainte, de la façon suivante : | ||
| - | * en préambule à chaque inscription, | + | * en préambule à chaque inscription, |
| <code sql> | <code sql> | ||
| CREATE TABLE LOCETUD ( | CREATE TABLE LOCETUD ( | ||
| Ligne 119: | Ligne 129: | ||
| | | ||
| </ | </ | ||
| - | + | | |
| - | | + | |
| - | (NoEtud, Jour, Heure, Salle) ayant pour clé primaire le triplet ( NoEtud, Jour, Heure ). | + | |
site/enseignement/licence/3i009/tme_triggers.1445446708.txt.gz · Dernière modification : de amann
