Académique Documents
Professionnel Documents
Culture Documents
avancées (PL\SQL)
3
Création d’un trigger Syntaxe
4
Création d’un trigger Explications
● L’événement déclenchant :
INSERT – DELETE – UPDATE – UPDATE [ OF nom_colonne, ...]
● Type de triggers :
Ligne FOR EACH ROW ou table (appliqué 1SEULe fois au
niveau table)
● Séquencement :
BEFORE – AFTER – INSTEAD OF (Vue seulement)
● ON : Table – Vue
5
Type de triggers.
Oracle propose deux types de triggers :
6
Exemples de triggers de table Exemple 1
/****************************************************/
7
Exemples de triggers de table Exemple 2
Pour cet exemple, nous allons créer une table appelée "LOG" où nous pourrons enregistrer le journal de
nos manipulations de la base de données.
8
Exemples de triggers de table Exemple 2 suite
9
Exemples de triggers de table Exemple 3
CREATE OR REPLACE TRIGGER UPDATE_DEPT
BEFORE
UPDATE
ON dept
BEGIN
DBMS_OUTPUT.PUT_LINE(' Avant la mise à jour de quelque departement');
END;
/
/**************************************************************************************************/
UPDATE dept SET test= test+(test*0.5);
10
Exemples de triggers de table Exemple 4
CREATE OR REPLACE TRIGGER trig_test_insertion
BEFORE
INSERT OR UPDATE OR DELETE ON dept
BEGIN
IF inserting THEN DBMS_OUTPUT.PUT_LINE('insertiont');
ELSIF deleting THEN DBMS_OUTPUT.PUT_LINE('suppression');
ELSIf updating THEN DBMS_OUTPUT.PUT_LINE('mise a jour');
END IF;
END;
/
begin
INSERT INTO dept VALUES (159,'test159', 123,123);
UPDATE dept SET dept.department_name='test_update' where dept.department_id=159;
DELETE FROM dept WHERE dept.department_id=123;
end;
11
Triggers de lignes
Lors de la création de triggers lignes, il est possible d’avoir
accès à la valeur ancienne et la valeur nouvelle grâce aux
mots clés OLD et NEW.
Il n’est pas possible d’avoir accès à ces valeurs dans les
triggers de table.
12
Prédicats
Dans un trigger ligne, on doit pouvoir accéder aux anciennes
et nouvelles valeurs de colonnes de la ligne.
13
Exemples de triggers de lignes Exemple 1
14
Exemples de triggers de lignes Exemple 2
15
Activer/désactiver/supprimer un trigger
▪ Désactiver un trigger:
▪ Activer un trigger:
▪ Supprimer un trigger:
16
Exercices
Exercice 1
CREATE TABLE emp_salary_history (employee_id number(5),
last_name varcHAR2(32), salary number(7,2) );
- Écrire un trigger permettant d'effectuer une insertion du salaire
ancien d’un employé dans la table emp_salary_history avant
d'effectuer une modification sur ce salaire.
- Mettre à jour le salaire à 3000 pour l’employé 100
Exercice 2
- Ecrire un trigger qui permet de vérifier pour chaque nouvelle
insertion dans la table employees si l’employee_id <1000 alors il
génère une exception "Numéro employé inférieur à 10000"
17