Vous êtes sur la page 1sur 1

TD/TP N°03 PL/SQL-ORACLE-Les Triggers

1) Créer un Trigger qui restreindra toutes les opérations de manipulation de données sur la table Pilote aux
heures de travail entre 08H et 18H. Ce trigger restreint les ordres DML sur la table Pilote en
utilisant des attributs Conditionnels pour l’insertion, la mise à jour et la suppression et afficher le
message d’erreurs suivant dans les cas où la condition du trigger n’est pas vérifié :
(-20501, 'Insertion impossible à cette heure.');
(-20502, 'Mise à jour impossible à cette heure.');
(-20503, 'Suppression impossible à cette heure.').
2) Utiliser une table nommée Audit_Pilote_Table, cette table est constituée des colonnes username,
timestamp, id, old_last_name, new_last_name, old_comm, new_comm, old_salary, new_salary). Créer
un trigger qui pour tout ordre DML sur la table PILOTE insérera une ligne d’audit en enregistrant
l’ancienne et la nouvelle valeur du nom, de la commission et salaire.
3) Créer un trigger qui permet de calculer la nouvelle commission quand une ligne est ajoutée ou modifiée
dans la table PILOTE.
4) Créer un trigger qui permet de s’assurer que le salaire ne sera jamais augmenté ou réduit de plus de 10%
d’un coup.
5) Créer un trigger nommé Ajout-pilote qui limite l’ajout d’un nouveau pilote à l’utilisateur ‘SYSTEM’, et
qui génère le message suivant « Utilisateur non autorisé » lorsque cette contrainte est violée.
6) Un déclencheur avec l’option After peut être utilisé pour faire des validations à posteriori afin de vérifier
que les modifications se sont bien déroulées.
Créer un trigger nommé verif_nhvol qui vérifié que le nombre moyen d’heures de vol des avions reste
inférieur ou égal à 200000 après un Update du nombre de vol ou un Insert dans Avion. Dans le cas
contraire afficher le message suivant : « le nombre moyen d’heure de vol est trop élevé) ;
7) Un trigger ligne avec l’option before peut permette d’effectuer des traitements d’initialisation avant
exécution des modifications sur la table.
Comptabiliser dans une variable nbmodif, le nombre de lignes de la table pilote manipulée par chaque
accès en mise à jour.

CREATE OR REPLACE TRIGGER LOGON_TRIG


AFTER logon ON SCHEMA
BEGIN
INSERT INTO log_trig_table (user_id, log_date, action)
VALUES (user, sysdate, ’Logging on’);
END;
------------------------------------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER LOGOFF_TRIG
BEFORE logoff ON SCHEMA
BEGIN
INSERT INTO log_trig_table (user_id, log_date, action)
VALUES (user, sysdate, ’Logging off’);
END;

Activation- désactivation d’un déclencheur

8) Lors de sa création un déclencheur est automatiquement activé. On peut être amené à désactiver un
déclencheur pour palier à des difficultés temporaires ou améliorer les performances
- Désactivez le déclencheur verif_nhvol par l’ordre ALTER TRIGGER
- Désactivez tous les déclencheurs de la table pilote par l’ordre
ALTER TABLE nom_table DISABLE ALL TRIGGERS
1

Vous aimerez peut-être aussi