0% ont trouvé ce document utile (0 vote)
33 vues2 pages

TP N°3: Contraintes D'intégrité Dynamiques / Triggers: L3 Isil A Module Base de Données (BD2) Octobre 2024 N.Abdat

Transféré par

infousthb22
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
33 vues2 pages

TP N°3: Contraintes D'intégrité Dynamiques / Triggers: L3 Isil A Module Base de Données (BD2) Octobre 2024 N.Abdat

Transféré par

infousthb22
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

L3 ISIL A Module Base de données (BD2) Octobre 2024

N.ABDAT

TP N°3 : Contraintes d'intégrité dynamiques / Triggers

-Se connecter avec l’utilisateur créé pour le TP BD2.


-Lancer le script de suppression des tuples des tables sauf DEPARTEMENT (c’est-à-dire vider les tables
EMPLOYE, PROJET, PARTICIPER).

-Ajout de nouvelles informations : ajouter les attributs (type entier) comme indiqué dans le tableau suivant
Relation Attribut Description Valeur par défaut
EMPLOYE Proj nombre de projets auxquels a participé l’employé 0
DEPARTEMENT Emp nombre d'employés travaillant dans le département 0
Proj nombre de projets réalisés par le département
PROJET Emp nombre d'employés participant à la réalisation du projet 0

-Définitions des déclencheurs :


1- On veut définir un déclencheur Emp_Dep qui permet de mettre à jour le nombre d'employés travaillant dans un
département dans le cas de l’insertion d’un nouvel employé. Donner la commande de création de ce trigger.
-Vérifier par l'exécution des commandes suivantes:
- Afficher la table DEPARTEMENT
-Insérer les tuples de EMPLOYE. Afficher DEPARTEMENT pour vérifier que Emp a été correctement mis à jour.

2- Définir un trigger Proj_Dep qui permet à chaque insertion d'un tuple dans la table Projet, d'incrémenter Proj dans
la table DEPARTEMENT.
-Vérifier par l'exécution des commandes suivantes:
-Afficher la table DEPARTEMENT
-Insérer les tuples de la table PROJET
-Afficher la table DEPARTEMENT pour vérifier que Proj a été correctement mis à jour.

3- Définir un trigger Part_Emp_Proj qui permet à chaque insertion/suppression d'un tuple dans PARTICIPER,
d'incrémenter/décrémenter Emp dans PROJET et d'incrémenter/décrémenter Proj dans EMPLOYE .
-Insérer les tuples de PARTICIPER puis afficher PROJET(CodeP, Emp) et EMPLOYE(NumE, Proj) pour vérifier
que les mises à jour ont été correctement effectuées.
-Supprimer de PARTICIPER le tuple (2,'P02') puis afficher PROJET(CodeP, Emp) et EMPLOYE(NumE, Proj) pour
vérifier.

4- On veut modifier le trigger Emp_Dep défini dans la question 1, pour ajouter le cas où un employé change de
DEPARTEMENT. Décrire dans ce cas, l'évènement ainsi que l’action à déclencher.
-Donner la commande permettant de modifier le trigger Emp_Dep
-Vérifier par l'exécution successive des commandes suivantes:
-L'employé N°1 change de département (vers D04). Ecrire la commande puis afficher DEPARTEMENT

5- Soit la contrainte "on ne peut pas réduire le budget d'un projet", c’est-à-dire qu'en cas de modification, le budget
ne peut qu'augmenter. Ecrire un trigger permettant de définir cette contrainte dynamique en utilisant la procédure
Système RAISE_APPLICATION_ERROR pour gérer le cas de tentative de réduire le budget. Afficher dans ce
cas 'impossible de réduire le budget'. (ci-dessous la syntaxe de cette procédure)
(on peut utiliser la clause WHEN dans ce trigger).

Syntaxe : RAISE_APPLICATION_ERROR (Num_erreur, Message) ; Où :


• Num_erreur : code d’erreur donné par l’utilisateur (compris entre -20999 et -20000).
• Message : est le texte à afficher décrivant l’erreur.
Remarque :
-L’utilisation de RAISE_APPLICATION_ERROR dans la section des instructions d’un
trigger permet d’annuler l’instruction qui le déclenche.

TP N° 3 1
L3 ISIL A Module Base de données (BD2) Octobre 2024
N.ABDAT

Manuel TP Oracle : Les déclencheurs (TRIGGERS)

Valeur par défaut : Commande pour ajouter un attribut avec une valeur par défaut :

ALTER TABLE nomTable ADD (nomAttribut typeAttribut DEFAULT valeur) ;

Les déclencheurs:

a) Syntaxe de création/modification d’un trigger :

CREATE [OR REPLACE ] TRIGGER nom-trigger


{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF column ...]}
[OR {DELETE | INSERT | UPDATE [OF column ...]}] ..
ON nom-table
[ FOR EACH ROW ]
[WHEN (condition)] ]
Begin
instructions ;
End ;
/
Où :
OR REPLACE : modifier un trigger existant.
nom-trigger : nom du trigger.
BEFORE : le trigger est déclenché avant d’exécuter l’événement.
AFTER : le trigger est déclenché après l’exécution de l’événement.
DELETE, INSERT, UPDATE...OF : événement déclenchant le trigger
ON nom-table : nom de la table de l’événement.
FOR EACH ROW : le trigger est exécuté autant de fois qu'il y a de tuples (enregistrements) touchés par
l’événement (row trigger). Sinon, s’il n’y a pas cette clause alors une seule exécution sera réalisée pour tout le
groupe de tuples (enregistrements) concernés (statement trigger).
WHEN : spécifie une condition qui doit être vérifiée pour déclencher le trigger (valable uniquement pour un row
trigger. Oracle évalue la condition pour chaque ligne touchée par le trigger)
Instructions : actions (ordres sql) à exécuter.
Le code est terminée par un slash "/"

b) Trigger avec plusieurs évènements :

CREATE [OR REPLACE] TRIGGER nom-trigger


{BEFORE | AFTER} INSERT OR DELETE OR UPDATE OF nomAttribut ON nom-table
FOR EACH ROW
BEGIN
IF INSERTING THEN .............instructions........................ END IF;
IF DELETING THEN ............. instructions....................... END IF;
IF UPDATING THEN ............. instructions....................... END IF;
END;
/
TP N° 3 2

Vous aimerez peut-être aussi