0% ont trouvé ce document utile (0 vote)
60 vues3 pages

tp8 Trigger Partie2

Transféré par

meddemks
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)
60 vues3 pages

tp8 Trigger Partie2

Transféré par

meddemks
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

TP

TP8: BASE DE DONNEES AVANCEES (S3 :


2020/2021)
- Triggers (déclencheurs
(déclencheurs)

Triggers (déclencheurs)
Exercice 1 :

La table articles (nom_Prodd (varchar2), Quantite (number)


(number), Prix_u(number)
(number) , cout (number)) contient les
détails sur les produit, où cout est une colonne calculée, elle enregistre le cout de l’article, elle est
calculé par cout =prix_u * quantite

1- Créer cette table


2- Insérer la ligne suivante nom_prod= LapTopHP
LapTopHP,Quantite=5,
te=5, prix=3600,00
3- Faire un select* from articles
articles, Que est ce que vous constatez pour le champ cout ?
4- Vous allez remédier à ce constat en créant le trigger suivant
CREATE OR REPLACE TRIGGER ARTCILE_TRG1
BEFORE
INSERT OR UPDATE ON ARTICLES
FOR EACH ROW
BEGIN
:NEW.COUT := :NEW.QUANTITE * :NEW.PRIX;
END;

5- Test de Trigger ARTCILE_TRG1


5.1 - Maintenant insérer les lignes suivantes dans la table ARTICLES :

Nom_prod Quantite Prix


Lap_Top_COM 10 2000,5
Mouse_king 40 20,00
USB_Key_Row 60 23,00
Lap_Top_Del 2 2300,00

5.2 - faire un select * from ARTICLES


ARTICLES,, Que est ce que vous constatez pour le champ
cout ? Expliquer … ?
5.3 – en une seule instruction, Procéder à une mise à jour du prix de tous les articles
Lap_Top à 2500,, Qu’est
Qu’est-ce que vous constatez pour le champ cout ? Expliquer … ?
6- Le statut de trigger peut être activé ou désactivé (ENABLE or DISABLE)
6.1 Vérifier que le trigger ARTICLE_TRG1 est actif.
6.2 On peut gérer les trigger par la commande ALTER TRIGGER
Par exemple, pour désactivé le trigger ARTICLE_TRG1 :
ALTER TRIGGER ARTICLE_TRG1 DISABLE
Et pour l’activer
ALTER TRIGGER ARTCILE_TRG1 ENABLE
a- Désactiver le trigger et essayer d’insérer un nouveau enregistrement ou de MAJ la
table ARTICLES, Que est ce que vous constatez pour le champ cout ? Expliquer … ?
b- Activer le de nouveau et essayer d’insérer un nouveau enregistrement ou de MAJ la
table ARTICLES, Que est ce que vous constatez pour le champ cout ? Expliquer … ?

Exercice 2 :

Les déclencheurs (Triggers)prouventdéclarer des exceptions et prévenir une modification indésirable


d’une table.Dans cet exemple nous allons créer un trigger EMP_TRG1 qui bloque une modification du
salaire d’un employé dans la table EMPLOYEES parvenu d’un utilisateur non autorisé à le faire

CREATE OR REPLACE TRIGGER EMP_TRG1


BEFORE UPDATE OF SALARY ON EMPLOYEES
FOR EACH ROW
DECLARE
User_non_autorise EXCEPTION;
BEGIN
IF (USER <> 'HR') THEN
RAISE User_non_autorise ;
END IF;
EXCEPTION WHEN User_non_autorise THEN
RAISE_APPLICATION_ERROR(-20001, 'SEUL le MANAGER peut CHANGER le
Salaire');
END;
Le trigger utilise la procédureRAISE_APPLICATION_ERROR, qui prend deux paramètres,

Numéro de l’erreur (tout numéro entre –20001 et –20999) et le message d’erreur qu’on désire
afficher à l’écran.

1- Pour tester ce trigger

1.a)faire un update de salaire d’un employé de votre choix

1.b) créer un autre utilisateur TEST_ESTM

Create user TEST_ESTM identified by estm ;


Crantresource,connect to TEST_ESTM ;
Grant update on EMPLOYEES to TEST_ESTM ;
1.c) se connecter en tant que TEST_ESTM et faire la MAJ de salaire des employées de
département 30. Qu’est-ce que vous constatez ?, expliquez ?

2- Désactiver le trigger et faire le même ’UPDATE que dans 1.c par l’utilisateur TEST_ESTM
Qu’est-ce que vous constatez ?, expliquez ?
Exercice 3 :
Créer la table EVALUATION (id , note_DS1,note_DS2,note_DSTP, Moyenne) tous ces champs sont de
type number , la colonne moyenne est la moyenne des notes des 3 DS .

1- On veut créer un trigger Evalu_TRG pour calculer la moyenne quelles sont les ordre MLD à
prévoir pour ce trigger.
2- Créer le trigger Evalu_TRG.
3- Tester ce trigger avec les order MLD concernées.

Vous aimerez peut-être aussi