SlideShare une entreprise Scribd logo
1  sur  24
Les Déclencheurs
(TRIGGERs)
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université Dr Tahar Moulay de Saïda
Faculté de Technologie
Département d’Informatique
Master II - Réseaux Informatiques et Systèmes Répartis (RISR)
UEF32 - Administration et Sécurité des Systèmes d’Information Répartis (ASSIR)
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Définitions
• Un trigger (déclencheur) est un programme
qui se déclenche automatiquement suite à un
événement.
• C’est un concept de base de données active et
ils existent dans la plupart des SGBDs.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Principes des triggers
• basé sur la séquence (ECA)
Evénement-Condition-Action
Evenement: un trigger est déclenché par un évènement,
spécifié par le programmeur, qui est en général une
insertion, suppression ou modification sur une table
Condition: la première action d’un trigger est de tester
une condition : si cette condition ne s’évalue pas à
TRUE, l’exécution s’arrête ;
Action: peut consister en toute opération sur la base de
données : les SGBD fournissent un langage impératif
permettant de créer de véritables procédures.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Utilisations des triggers
• Pour garantir qu’une propriété est vérifiée
– Exemple:
– garantir que le nombre d’étudiants inscrits à une unité
d’enseignement est toujours inférieur à sa capacité d’accueil.
– garantir que le salaire d’un employé est inférieur à celui de
son supérieur.
• Pour automatiser des traitements lors de
certains événements
– Exemple:
– créer une commande de produit à chaque fois que sa quantité
en stock passe en dessous d’un certain seuil.
• Pour programmer des contraintes d’intégrités
- (Base de données Réparties).
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Syntaxe
CREATE [OR REPLACE] TRIGGER<nom-trigger>
<quand> <évenements> ON <table>
[FOR EACH ROW [WHEN <condition>]]
BEGIN
<action>
END;
BEFORE ou AFTER (table) ou
INSTEAD OF (vue)
DELETE, UPDATE ou INSERT
séparés par des OR.
est une procédure qui peut être
implantée, sous Oracle, avec le
langage PL/SQL
toute condition
booléenne SQL
est optionnelle
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Types de triggers
• ORACLE propose deux types de triggers
- les triggers lignes qui se déclenchent individuellement pour
chaque ligne de la table affectée par le trigger,
- les triggers globaux qui sont déclenchées une seule fois.
- Si l'option FOR EACH ROW est spécifiée, c'est un trigger ligne, sinon
c'est un trigger global.
• Pour les triggers lignes, on peut introduire une restriction sur les
lignes à l'aide d'une expression logique SQL : c'est la clause WHEN :
– Le trigger n'est déclenché sur une ligne que si l'expression WHEN est
vérifiée pour cette ligne.
– Par exemple, WHEN (new.empno>0) empêchera l'exécution du trigger
si la nouvelle valeur de EMPNO est 0, négative ou NULL.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Manipulation de valeur
• Deux valeurs sont manipulés
– La nouvelle valeur est appelée :new.colonne
– L'ancienne valeur est appelée :old.colonne
• Exemple : IF :new.salaire < :old.salaire ........
:old :new
insert null ligne insérée
delete ligne supprimée null
update ligne avant modif ligne après modif
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Les prédicats conditionnelles
• Quand un trigger comporte plusieurs instructions de
déclenchement (par exemple INSERT OR DELETE OR UPDATE),
on peut utiliser des prédicats conditionnels (INSERTING,
DELETING et UPDATING) pour exécuter des blocs de code
spécifiques pour chaque instruction de déclenchement.
Exemple :
CREATE TRIGGER ...
BEFORE INSERT OR UPDATE ON employe
.......
BEGIN
......
IF INSERTING THEN ....... END IF;
IF UPDATING THEN ........ END IF;
......
END;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Activation d’un Trigger
• Un trigger peut être activé ou désactivé. Par défaut, un trigger est activé dès sa
création.
• S’il est désactivé, ORACLE le stocke mais l’ignore.
• On peut désactiver un trigger si :
• il référence un objet non disponible
• on veut charger rapidement un volume de données important ou recharger des
données déjà contrôlées.
• Pour désactiver un trigger, on utilise l’instruction:
ALTER TRIGGER nomtrigger DISABLE;
• On peut désactiver tous les triggers associés à une table avec la commande :
ALTER TABLE nomtable DISABLE ALL TRIGGERS;
• - A l’inverse on peut réactiver un trigger :
ALTER TRIGGER nomtrigger ENABLE;
• ou tous les triggers associés à une table :
ALTER TABLE nomtable ENABLE ALL TRIGGERS;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Références aux valeurs modifiées
CREATE TRIGGER MAJ_Log
AFTER UPDATE ON Pays
FOR EACH ROW
WHEN (new.surface <> old.surface)
BEGIN
INSERT INTO Pays_log (nom, libellé)
VALUES (:new.nom, 'surface_changée');
END;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Gestion d'exceptions
• Si une erreur se produit pendant l'exécution d'un trigger, toutes les
mises à jour produites par le trigger ainsi que par l'instruction qui l'a
déclenché sont défaites.
• On peut introduire des exceptions en provoquant des erreurs.
• Une exception est une erreur générée dans une procédure
PL/SQL. Un bloc PL/SQL peut contenir un bloc EXCEPTION gérant
les différentes erreurs possibles avec des clauses WHEN.
• Elle peut être prédéfinie ou définie par l'utilisateur.
• Une clause WHEN OTHERS THEN; gère le cas des erreurs non
prévues.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Exemple d’exceptions prédéfinit
• NO_DATA_FOUND
– cette exception est générée quand un SELECT
INTO ne retourne pas de lignes
• DUP_VAL_ON_INDEX
– tentative d'insertion d'une ligne avec une valeur
déjà existante pour une colonne à index unique
• ZERO_DIVIDE
– division par zéro
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Bloc Exception
BEGIN
…
EXCEPTION
WHEN exception1 [OR exception2 …] THEN
instructions;
[WHEN exception3 [OR exception4 …] THEN
instructions; ]
[WHEN OTHERS THEN
instructions; ]
END;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Exception utilisateur
Déclaration
La déclaration du nom de l’exception doit se trouver dans la section
déclarative du bloc PL/SQL.
nomException EXCEPTION;
Déclenchement
- Une exception utilisateur ne sera pas levée de la même manière
qu’une exception interne.
- Le programme doit explicitement dérouter le traitement vers le
bloc des exceptions par la directive RAISE.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Exception utilisateur
DECLARE
erreur_PK_reparti EXCEPTION;
BEGIN
…
IF condition THEN RAISE erreur_PK_reparti;
END IF;
EXCEPTION
WHEN erreur_PK_reparti THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE ('Désolé, là clé existe déjà!');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Pas de produit de numéro : ‘ || v_nump);
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('Erreur d''Oracle ' || SQLERRM || '(' ||
SQLCODE || ')');
END;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Procédure RAISE_APPLICATION ERROR
La procédure RAISE_APPLICATION_ERROR permet de définir ses
propres messages et codes d’erreurs.
- numéroErreur : valeur définie par l'utilisateur pour l'exception,
comprise entre –20 000 et –20 999 ;
- message : chaîne de caractères (max 2 048 octets) décrivant
l’erreur.
- TRUE | FALSE : booléen facultatif. TRUE positionne l’erreur
dans une pile si plusieurs exceptions doivent être propagées en
cascade., FALSE par défaut remplace toutes les erreurs
précédentes dans la pile.
RAISE_APPLICATION_ERROR(numéroErreur, message [, {TRUE |
FALSE}]);
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
BEGIN
….
IF condition THEN
RAISE_APPLICATION_ERROR(-20102, ‘Insertion non autorisée!');
END IF;
…
END;
Procédure RAISE_APPLICATION ERROR
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
BLOC PL/SQL
- Les structures de contrôle habituelles d’un langage (IF, WHILE…) ne
font pas partie intégrante de la norme SQL.
- Le langage PL/SQL (Procedural Langage/Structured Query Langage)
est le langage de prédilection d’Oracle
Avantages
La modularité (un bloc d’instruction peut être composé d’un
autre).
La portabilité : un programme PL/SQL est indépendant du système
d’exploitation qui héberge le serveur Oracle.
L’intégration avec les données des tables : on retrouvera avec
PL/SQL tous les types de données et instructions disponibles sous
SQL.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Structure d’un Bloc PL/SQL
DECLARE (section optionnelle) déclare les variables, types,
curseurs, exceptions, etc. ;
BEGIN (section obligatoire) contient le code PL/SQL incluant ou non
des directives SQL (jusqu’à l’instruction END;).
Le caractère « / » termine un bloc pour son exécution dans
l’interface SQL*Plus.
EXCEPTION (section optionnelle) permet de traiter les erreurs
retournées par le SGBD à la suite d’exécutions d’instructions SQL.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Structure d’un Bloc PL/SQL
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Variables
identificateur [CONSTANT] typeDeDonnée [NOT NULL] [:= |
DEFAULT expression];
identificateur : lettres , chiffres , $ , _ , #
DECLARE
v_dateNaissance DATE;
/* équivaut à v_dateNaissance
DATE:= NULL; */
v_capacite NUMBER(3) := 999;
v_telephone CHAR(14) NOT NULL := '06-76-85-14-89';
v_trouve BOOLEAN NOT NULL := TRUE;
BEGIN
v_capacite := 20;
v_dateNaissance := ’21/12/2015’;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Variables
La directive %TYPE déclare une variable selon la définition
d’une colonne d’une table.
Elle permet aussi de déclarer une variable conformément à une
autre variable précédemment déclarée.
Variables %TYPE
•Il faut faire préfixer la directive %TYPE avec le nom de la
table et celui de la colonne :
identificateur nomTable.nomColonne%TYPE
•ou avec le nom d’une variable existante :
identificateur2 identificateur1%TYPE.
DECLARE
v_num etudiant.num_etud%TYPE;
v_prime NUMBER(5,2) := 500.50;
v_prime_min v_prime %TYPE := v_prime*0.9;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Structures de contrôles
IF condition THEN
instructions;
END IF;
IF condition THEN
instructions;
ELSE
instructions;
END IF;
IF condition1 THEN
instructions;
ELSIF condition2 THEN
instructions;
ELSE
instructions;
END IF;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Extraire des données
SELECT liste INTO { nomVariablePLSQL [,nomVariablePLSQL]…
| nomRECORD } FROM nomTable …;
DECLARE
v_nom etudiant.nom_etud%TYPE;
BEGIN
SELECT nom_etud INTO v_nom
FROM etudiant
WHERE num_etud=102158;
…
END;

Contenu connexe

Similaire à trigger.pptx

Cisco et-le-simulateur-packet-tracer
Cisco et-le-simulateur-packet-tracerCisco et-le-simulateur-packet-tracer
Cisco et-le-simulateur-packet-tracer
Med Ali Bhs
 
Cours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxCours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptx
gorguindiaye
 
chp-6-Les-triggers (1).pptx
chp-6-Les-triggers (1).pptxchp-6-Les-triggers (1).pptx
chp-6-Les-triggers (1).pptx
GEEKGHAZI
 
Chapitre iii interruptions
Chapitre iii interruptionsChapitre iii interruptions
Chapitre iii interruptions
Sana Aroussi
 

Similaire à trigger.pptx (20)

Transaction.pptx
Transaction.pptxTransaction.pptx
Transaction.pptx
 
Transaction.pdf
Transaction.pdfTransaction.pdf
Transaction.pdf
 
ORACLE 12C PLSQL Gestion des Triggers.ppt
ORACLE 12C PLSQL Gestion des Triggers.pptORACLE 12C PLSQL Gestion des Triggers.ppt
ORACLE 12C PLSQL Gestion des Triggers.ppt
 
ANSII Configuration Materiel server/client x86
ANSII Configuration Materiel server/client x86ANSII Configuration Materiel server/client x86
ANSII Configuration Materiel server/client x86
 
plsql-8.ppt
plsql-8.pptplsql-8.ppt
plsql-8.ppt
 
Introduction.pptx
Introduction.pptxIntroduction.pptx
Introduction.pptx
 
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
 
Journées SQL Server 2011 Extended Events
Journées SQL Server 2011  Extended Events Journées SQL Server 2011  Extended Events
Journées SQL Server 2011 Extended Events
 
Cisco et-le-simulateur-packet-tracer
Cisco et-le-simulateur-packet-tracerCisco et-le-simulateur-packet-tracer
Cisco et-le-simulateur-packet-tracer
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)
 
Sql
SqlSql
Sql
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseur
 
Cours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxCours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptx
 
Cours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxCours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptx
 
Cours SSI - Copie.pptx
Cours SSI - Copie.pptxCours SSI - Copie.pptx
Cours SSI - Copie.pptx
 
Cours SSI - Copie.pptx
Cours SSI - Copie.pptxCours SSI - Copie.pptx
Cours SSI - Copie.pptx
 
Cours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxCours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptx
 
Re build Nantes 2013 SQL Server monitoring
Re build Nantes 2013   SQL Server monitoringRe build Nantes 2013   SQL Server monitoring
Re build Nantes 2013 SQL Server monitoring
 
chp-6-Les-triggers (1).pptx
chp-6-Les-triggers (1).pptxchp-6-Les-triggers (1).pptx
chp-6-Les-triggers (1).pptx
 
Chapitre iii interruptions
Chapitre iii interruptionsChapitre iii interruptions
Chapitre iii interruptions
 

Plus de SamirAwad14 (14)

Etude comparative des classifieurs Naïve Bayes et SVM
Etude comparative des classifieurs Naïve Bayes et SVMEtude comparative des classifieurs Naïve Bayes et SVM
Etude comparative des classifieurs Naïve Bayes et SVM
 
NS3 - Exploitation.pptx
NS3 - Exploitation.pptxNS3 - Exploitation.pptx
NS3 - Exploitation.pptx
 
srep_cours_04.pdf
srep_cours_04.pdfsrep_cours_04.pdf
srep_cours_04.pdf
 
srep_cours_06.pdf
srep_cours_06.pdfsrep_cours_06.pdf
srep_cours_06.pdf
 
srep_cours_05.pdf
srep_cours_05.pdfsrep_cours_05.pdf
srep_cours_05.pdf
 
SQL-ORACLE.pptx
SQL-ORACLE.pptxSQL-ORACLE.pptx
SQL-ORACLE.pptx
 
repartition oracle.pptx
repartition oracle.pptxrepartition oracle.pptx
repartition oracle.pptx
 
SQL-ORACLE.pdf
SQL-ORACLE.pdfSQL-ORACLE.pdf
SQL-ORACLE.pdf
 
TD.pdf
TD.pdfTD.pdf
TD.pdf
 
trigger.pdf
trigger.pdftrigger.pdf
trigger.pdf
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdf
 
Data Warehousing.pptx
Data Warehousing.pptxData Warehousing.pptx
Data Warehousing.pptx
 
L'outil MDA acceleo.pptx
L'outil MDA acceleo.pptxL'outil MDA acceleo.pptx
L'outil MDA acceleo.pptx
 
Système de quorum dans les grilles.pptx
Système de quorum dans les grilles.pptxSystème de quorum dans les grilles.pptx
Système de quorum dans les grilles.pptx
 

Dernier

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
Faga1939
 

Dernier (18)

La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Cours
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 

trigger.pptx

  • 1. Les Déclencheurs (TRIGGERs) Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université Dr Tahar Moulay de Saïda Faculté de Technologie Département d’Informatique Master II - Réseaux Informatiques et Systèmes Répartis (RISR) UEF32 - Administration et Sécurité des Systèmes d’Information Répartis (ASSIR)
  • 2. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Définitions • Un trigger (déclencheur) est un programme qui se déclenche automatiquement suite à un événement. • C’est un concept de base de données active et ils existent dans la plupart des SGBDs.
  • 3. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Principes des triggers • basé sur la séquence (ECA) Evénement-Condition-Action Evenement: un trigger est déclenché par un évènement, spécifié par le programmeur, qui est en général une insertion, suppression ou modification sur une table Condition: la première action d’un trigger est de tester une condition : si cette condition ne s’évalue pas à TRUE, l’exécution s’arrête ; Action: peut consister en toute opération sur la base de données : les SGBD fournissent un langage impératif permettant de créer de véritables procédures.
  • 4. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Utilisations des triggers • Pour garantir qu’une propriété est vérifiée – Exemple: – garantir que le nombre d’étudiants inscrits à une unité d’enseignement est toujours inférieur à sa capacité d’accueil. – garantir que le salaire d’un employé est inférieur à celui de son supérieur. • Pour automatiser des traitements lors de certains événements – Exemple: – créer une commande de produit à chaque fois que sa quantité en stock passe en dessous d’un certain seuil. • Pour programmer des contraintes d’intégrités - (Base de données Réparties).
  • 5. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Syntaxe CREATE [OR REPLACE] TRIGGER<nom-trigger> <quand> <évenements> ON <table> [FOR EACH ROW [WHEN <condition>]] BEGIN <action> END; BEFORE ou AFTER (table) ou INSTEAD OF (vue) DELETE, UPDATE ou INSERT séparés par des OR. est une procédure qui peut être implantée, sous Oracle, avec le langage PL/SQL toute condition booléenne SQL est optionnelle
  • 6. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Types de triggers • ORACLE propose deux types de triggers - les triggers lignes qui se déclenchent individuellement pour chaque ligne de la table affectée par le trigger, - les triggers globaux qui sont déclenchées une seule fois. - Si l'option FOR EACH ROW est spécifiée, c'est un trigger ligne, sinon c'est un trigger global. • Pour les triggers lignes, on peut introduire une restriction sur les lignes à l'aide d'une expression logique SQL : c'est la clause WHEN : – Le trigger n'est déclenché sur une ligne que si l'expression WHEN est vérifiée pour cette ligne. – Par exemple, WHEN (new.empno>0) empêchera l'exécution du trigger si la nouvelle valeur de EMPNO est 0, négative ou NULL.
  • 7. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Manipulation de valeur • Deux valeurs sont manipulés – La nouvelle valeur est appelée :new.colonne – L'ancienne valeur est appelée :old.colonne • Exemple : IF :new.salaire < :old.salaire ........ :old :new insert null ligne insérée delete ligne supprimée null update ligne avant modif ligne après modif
  • 8. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Les prédicats conditionnelles • Quand un trigger comporte plusieurs instructions de déclenchement (par exemple INSERT OR DELETE OR UPDATE), on peut utiliser des prédicats conditionnels (INSERTING, DELETING et UPDATING) pour exécuter des blocs de code spécifiques pour chaque instruction de déclenchement. Exemple : CREATE TRIGGER ... BEFORE INSERT OR UPDATE ON employe ....... BEGIN ...... IF INSERTING THEN ....... END IF; IF UPDATING THEN ........ END IF; ...... END;
  • 9. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Activation d’un Trigger • Un trigger peut être activé ou désactivé. Par défaut, un trigger est activé dès sa création. • S’il est désactivé, ORACLE le stocke mais l’ignore. • On peut désactiver un trigger si : • il référence un objet non disponible • on veut charger rapidement un volume de données important ou recharger des données déjà contrôlées. • Pour désactiver un trigger, on utilise l’instruction: ALTER TRIGGER nomtrigger DISABLE; • On peut désactiver tous les triggers associés à une table avec la commande : ALTER TABLE nomtable DISABLE ALL TRIGGERS; • - A l’inverse on peut réactiver un trigger : ALTER TRIGGER nomtrigger ENABLE; • ou tous les triggers associés à une table : ALTER TABLE nomtable ENABLE ALL TRIGGERS;
  • 10. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Références aux valeurs modifiées CREATE TRIGGER MAJ_Log AFTER UPDATE ON Pays FOR EACH ROW WHEN (new.surface <> old.surface) BEGIN INSERT INTO Pays_log (nom, libellé) VALUES (:new.nom, 'surface_changée'); END;
  • 11. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Gestion d'exceptions • Si une erreur se produit pendant l'exécution d'un trigger, toutes les mises à jour produites par le trigger ainsi que par l'instruction qui l'a déclenché sont défaites. • On peut introduire des exceptions en provoquant des erreurs. • Une exception est une erreur générée dans une procédure PL/SQL. Un bloc PL/SQL peut contenir un bloc EXCEPTION gérant les différentes erreurs possibles avec des clauses WHEN. • Elle peut être prédéfinie ou définie par l'utilisateur. • Une clause WHEN OTHERS THEN; gère le cas des erreurs non prévues.
  • 12. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Exemple d’exceptions prédéfinit • NO_DATA_FOUND – cette exception est générée quand un SELECT INTO ne retourne pas de lignes • DUP_VAL_ON_INDEX – tentative d'insertion d'une ligne avec une valeur déjà existante pour une colonne à index unique • ZERO_DIVIDE – division par zéro
  • 13. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Bloc Exception BEGIN … EXCEPTION WHEN exception1 [OR exception2 …] THEN instructions; [WHEN exception3 [OR exception4 …] THEN instructions; ] [WHEN OTHERS THEN instructions; ] END;
  • 14. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Exception utilisateur Déclaration La déclaration du nom de l’exception doit se trouver dans la section déclarative du bloc PL/SQL. nomException EXCEPTION; Déclenchement - Une exception utilisateur ne sera pas levée de la même manière qu’une exception interne. - Le programme doit explicitement dérouter le traitement vers le bloc des exceptions par la directive RAISE.
  • 15. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Exception utilisateur DECLARE erreur_PK_reparti EXCEPTION; BEGIN … IF condition THEN RAISE erreur_PK_reparti; END IF; EXCEPTION WHEN erreur_PK_reparti THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE ('Désolé, là clé existe déjà!'); WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Pas de produit de numéro : ‘ || v_nump); WHEN OTHERS THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('Erreur d''Oracle ' || SQLERRM || '(' || SQLCODE || ')'); END;
  • 16. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Procédure RAISE_APPLICATION ERROR La procédure RAISE_APPLICATION_ERROR permet de définir ses propres messages et codes d’erreurs. - numéroErreur : valeur définie par l'utilisateur pour l'exception, comprise entre –20 000 et –20 999 ; - message : chaîne de caractères (max 2 048 octets) décrivant l’erreur. - TRUE | FALSE : booléen facultatif. TRUE positionne l’erreur dans une pile si plusieurs exceptions doivent être propagées en cascade., FALSE par défaut remplace toutes les erreurs précédentes dans la pile. RAISE_APPLICATION_ERROR(numéroErreur, message [, {TRUE | FALSE}]);
  • 17. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) BEGIN …. IF condition THEN RAISE_APPLICATION_ERROR(-20102, ‘Insertion non autorisée!'); END IF; … END; Procédure RAISE_APPLICATION ERROR
  • 18. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) BLOC PL/SQL - Les structures de contrôle habituelles d’un langage (IF, WHILE…) ne font pas partie intégrante de la norme SQL. - Le langage PL/SQL (Procedural Langage/Structured Query Langage) est le langage de prédilection d’Oracle Avantages La modularité (un bloc d’instruction peut être composé d’un autre). La portabilité : un programme PL/SQL est indépendant du système d’exploitation qui héberge le serveur Oracle. L’intégration avec les données des tables : on retrouvera avec PL/SQL tous les types de données et instructions disponibles sous SQL.
  • 19. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Structure d’un Bloc PL/SQL DECLARE (section optionnelle) déclare les variables, types, curseurs, exceptions, etc. ; BEGIN (section obligatoire) contient le code PL/SQL incluant ou non des directives SQL (jusqu’à l’instruction END;). Le caractère « / » termine un bloc pour son exécution dans l’interface SQL*Plus. EXCEPTION (section optionnelle) permet de traiter les erreurs retournées par le SGBD à la suite d’exécutions d’instructions SQL.
  • 20. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Structure d’un Bloc PL/SQL
  • 21. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Variables identificateur [CONSTANT] typeDeDonnée [NOT NULL] [:= | DEFAULT expression]; identificateur : lettres , chiffres , $ , _ , # DECLARE v_dateNaissance DATE; /* équivaut à v_dateNaissance DATE:= NULL; */ v_capacite NUMBER(3) := 999; v_telephone CHAR(14) NOT NULL := '06-76-85-14-89'; v_trouve BOOLEAN NOT NULL := TRUE; BEGIN v_capacite := 20; v_dateNaissance := ’21/12/2015’;
  • 22. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Variables La directive %TYPE déclare une variable selon la définition d’une colonne d’une table. Elle permet aussi de déclarer une variable conformément à une autre variable précédemment déclarée. Variables %TYPE •Il faut faire préfixer la directive %TYPE avec le nom de la table et celui de la colonne : identificateur nomTable.nomColonne%TYPE •ou avec le nom d’une variable existante : identificateur2 identificateur1%TYPE. DECLARE v_num etudiant.num_etud%TYPE; v_prime NUMBER(5,2) := 500.50; v_prime_min v_prime %TYPE := v_prime*0.9;
  • 23. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Structures de contrôles IF condition THEN instructions; END IF; IF condition THEN instructions; ELSE instructions; END IF; IF condition1 THEN instructions; ELSIF condition2 THEN instructions; ELSE instructions; END IF;
  • 24. Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR) Extraire des données SELECT liste INTO { nomVariablePLSQL [,nomVariablePLSQL]… | nomRECORD } FROM nomTable …; DECLARE v_nom etudiant.nom_etud%TYPE; BEGIN SELECT nom_etud INTO v_nom FROM etudiant WHERE num_etud=102158; … END;