Les triggers Les triggers Dé ?nition Les triggers sont des procédures stockées qui s ? exécutent automatiquement quant un événement se produit En général cet événement représente une opération DML Data Manipulation Language sur une table Les instructions
Les triggers Dé ?nition Les triggers sont des procédures stockées qui s ? exécutent automatiquement quant un événement se produit En général cet événement représente une opération DML Data Manipulation Language sur une table Les instructions DML doivent inclure INSERT UPDATE ou DELETE Ils permettent entre autre de contrôler les accès à la base de données Syntaxe simpli ?ée pour créer un trigger avec une opération DML CREATE OR REPALCE TRIGGER nomtrigger BEFORE AFTER INSERT OR UPDATE OR DELETE ON Nomdetable FOR EACH ROW WHEN condition BLOC PL SQL Attention le nom du trigger doit être unique dans la base de données ? L ? option BEFORE AFTER indique le moment du déclenchement du trigger ? Les instructions SQL INSERT OR UPDATE OR DELETE peuvent être toutes présentes comme on peut en avoir juste une ? Pour un UPDATE on peut spéci ?er une liste de colonnes Dans ce cas le trigger ne se déclenchera que s ? il porte sur l ? une des colonnes précisées dans la liste voir exemple plus loin Types de TRIGGERS oracle Oracle propose deux types deux types de triggers Les triggers lignes qui se déclenchent individuellement pour chaque ligne de la table a ?ectée par le trigger L ? option FOR EACH ROW est alors spéci ?ée http download oracle com docs html B ch htm i http download oracle com docs cd B server b statements htm C Les triggers globaux qui sont déclenchées une seule fois L ? option FOR EACH ROW n ? est pas spéci ?ée Exemple TRIGGER GLOBAL CREATE OR REPLACE TRIGGER ctrlmiseajour BEFORE INSERT OR DELETE OR UPDATE ON EMPLOYES DECLARE MESSAGE EXCEPTION BEGIN IF TOCHAR SYSDATE 'DY' 'SAM ' OR TOCHAR SYSDATE 'DY' 'DIM ' THEN RAISE MESSAGE END IF EXCEPTION WHEN MESSAGE THEN RAISEAPPLICATIONERROR - ? on ne met pas à jour la ?n de semaine' END On peut également utiliser les triggers pour contrôler les valeurs qui ont été insérée L ? exemple le plus souvent utilisé et l ? utilisation de trigger pour faire une incrémentation automatique de la clé primaire Exemple TRIGGER SUR CHAQUE LIGNE CREATE OR REPLACETRIGGER EMPINS BEFORE INSERT ON EMPLOYES FOR EACH ROW BEGIN IF NEW NUMEMP IS NULL THEN SELECT SQEMP NEXTVAL INTO NEW NUMEMP FROM DUAL END IF END http download oracle com docs html B ch htm i http download oracle com docs cd B server b statements htm CLa séquence a été créée comme suit CREATE SEQUENCE SQEMP INCREMENT BY START WITH On exécute ensuite l ? instruction INSERT sans le numemp IMPORTANT lors de la création d ? un trigger les anciennes valeurs sont nommées old colonne faire attention aux deux points Les nouvelles valeurs sont nommées new colonne faire attention aux deux points Exemple Contrôler les salaires ils doivent être plus grand que le plus petit des salaires et plus petit que le plus grand des salaire CREATE OR REPLACE TRIGGER CTRLsalaire BEFORE INSERT OR UPDATE OF salaire ON employes FOR EACH ROW
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour une utilisation commerciale Aucune attribution requise- Détails
- Publié le Aoû 19, 2022
- Catégorie Administration
- Langue French
- Taille du fichier 41.2kB