SlideShare ist ein Scribd-Unternehmen logo
1 von 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;

Weitere ähnliche Inhalte

Ähnlich wie trigger.pptx

Transaction.pptx
Transaction.pptxTransaction.pptx
Transaction.pptxSamirAwad14
 
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.pptAhmathBambaMBACKE
 
ANSII Configuration Materiel server/client x86
ANSII Configuration Materiel server/client x86ANSII Configuration Materiel server/client x86
ANSII Configuration Materiel server/client x86ssuser6373db
 
Introduction.pptx
Introduction.pptxIntroduction.pptx
Introduction.pptxSamirAwad14
 
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éessmiste
 
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 David BAFFALEUF
 
Cisco et-le-simulateur-packet-tracer
Cisco et-le-simulateur-packet-tracerCisco et-le-simulateur-packet-tracer
Cisco et-le-simulateur-packet-tracerMed Ali Bhs
 
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)Aymeric Weinbach
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseurISIG
 
Cours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxCours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxgorguindiaye
 
Cours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxCours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxgorguindiaye
 
Cours SSI - Copie.pptx
Cours SSI - Copie.pptxCours SSI - Copie.pptx
Cours SSI - Copie.pptxgorguindiaye
 
Cours SSI - Copie.pptx
Cours SSI - Copie.pptxCours SSI - Copie.pptx
Cours SSI - Copie.pptxgorguindiaye
 
Cours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxCours SSI - Copie (1).pptx
Cours SSI - Copie (1).pptxgorguindiaye
 
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 monitoringDavid BAFFALEUF
 
chp-6-Les-triggers (1).pptx
chp-6-Les-triggers (1).pptxchp-6-Les-triggers (1).pptx
chp-6-Les-triggers (1).pptxGEEKGHAZI
 
Chapitre iii interruptions
Chapitre iii interruptionsChapitre iii interruptions
Chapitre iii interruptionsSana Aroussi
 

Ähnlich wie 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
 

Mehr von SamirAwad14

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 SVMSamirAwad14
 
NS3 - Exploitation.pptx
NS3 - Exploitation.pptxNS3 - Exploitation.pptx
NS3 - Exploitation.pptxSamirAwad14
 
srep_cours_04.pdf
srep_cours_04.pdfsrep_cours_04.pdf
srep_cours_04.pdfSamirAwad14
 
srep_cours_06.pdf
srep_cours_06.pdfsrep_cours_06.pdf
srep_cours_06.pdfSamirAwad14
 
srep_cours_05.pdf
srep_cours_05.pdfsrep_cours_05.pdf
srep_cours_05.pdfSamirAwad14
 
repartition oracle.pptx
repartition oracle.pptxrepartition oracle.pptx
repartition oracle.pptxSamirAwad14
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdfSamirAwad14
 
Data Warehousing.pptx
Data Warehousing.pptxData Warehousing.pptx
Data Warehousing.pptxSamirAwad14
 
L'outil MDA acceleo.pptx
L'outil MDA acceleo.pptxL'outil MDA acceleo.pptx
L'outil MDA acceleo.pptxSamirAwad14
 
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.pptxSamirAwad14
 

Mehr von 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
 

Kürzlich hochgeladen

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.pdfachrafbrahimi1
 
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
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
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...Nguyen Thanh Tu Collection
 
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.pptxRayane619450
 
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.pdfabatanebureau
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
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çaisTxaruka
 
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.Txaruka
 
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çaisTxaruka
 
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.pdfssuserc72852
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 

Kürzlich hochgeladen (13)

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'É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...
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
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...
 
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
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
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
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
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
 
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.
 
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
 
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
 
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;