A propos des déclencheurs
Un déclencheur est une unité PL/SQL stockée dans la base de données et qui (si elle est activée) est exécutée automatiquement en réponse à un événement indiqué.
Un déclencheur a la structure suivante :
TRIGGER trigger_name
triggering_event
[ trigger_restriction ]
BEGIN
triggered_action;
END;
Le nom trigger_name doit être unique pour les déclencheurs dans le schéma. Un déclencheur peut porter le même nom qu'un autre type d'objet dans le schéma (une table, par exemple) ; toutefois, Oracle recommande l'utilisation d'une convention de dénomination pour éviter les confusions.
Si le déclencheur est activé, l'événement triggering_event induit l'exécution par la base de données de l'action trigger_action si la restriction trigger_restriction a la valeur TRUE ou elle est omise. L'événement triggering_event est associé à une table, une vue, un schéma ou la base de données et correspond à l'une des valeurs suivantes :
-
Instruction DML (décrite à la rubrique "A propos des instructions DMD (Data Manipulation Language)")
-
Instruction DDL (décrite à la rubrique "A propos des instructions DLD (Data Definition Language)")
-
Opération de base de données (SERVERERROR, LOGON, LOGOFF, STARTUP ou SHUTDOWN)
Si le déclencheur est désactivé, l'événement triggering_event n'induit pas l'exécution par la base de données de l'action trigger_action, même si la restriction trigger_restriction a la valeur TRUE ou a été omise.
Par défaut, un déclencheur est activé lors de sa création. Vous pouvez basculer les déclencheurs entre les états actif et inactif.
Contrairement aux sous-programmes, les déclencheurs ne peuvent pas être appelés directement. Ils sont appelés uniquement par l'événement de déclenchement associé qui peut être causé par un utilisateur ou une application. Leur exécution peut passer inaperçue, à moins qu'elle ne déclenche une erreur non gérée correctement.
Un déclencheur facile peut être déclenché à un seul des points de temporisation suivants :
-
Avant l'exécution de l'événement de déclenchement (déclencheur BEFORE de niveau instruction)
-
Après l'exécution de l'événement de déclenchement (déclencheur AFTER de niveau instruction)
-
Avant chaque ligne concernée par l'événement (déclencheur BEFORE de niveau ligne)
-
Après chaque ligne concernée par l'événement (déclencheur AFTER de niveau ligne)
Un déclencheur composite peut être exécuté à plusieurs points dans le temps. Pour plus d'informations sur les déclencheurs composés, reportez-vous au guide Oracle Database PL/SQL Language Reference.
Un déclencheur INSTEAD OF est défini sur une vue et l'événement de déclenchement associés est une instruction DML. Au lieu d'exécuter l'instruction LMD, Oracle Database exécute le déclencheur INSTEAD OF. Pour plus d'informations, reportez-vous à la section "Création d'un déclencheur INSTEAD OF".
Un déclencheur système est défini sur un schéma ou sur la base de données. Un déclencheur défini sur un schéma est exécuté pour chaque événement associé au propriétaire du schéma (l'utilisateur en cours). Un déclencheur défini sur une base de données est exécuté pour chaque événement associé à l'ensemble des utilisateurs.
Les déclencheurs permettent notamment d'appliquer les règles de gestion concernant toutes les applications client. Supposons, par exemple, que le format des données ajoutées à la table EMPLOYEES doit respecter un certain format et que de nombreuses applications client puissent ajouter des données à cette table. Un déclencheur sur la table peut garantir le format correct de toutes les données qui lui sont ajoutées. Puisque le déclencheur est exécuté dès lors qu'un client ajoute des données à la table, aucun client ne peut contourner la règle. Le code d'application de la règle peut être stocké et maintenu au sein du déclencheur, plutôt que dans chaque application client. Pour connaître les autres utilisations des déclencheurs, reportez-vous au manuelOracle Database PL/SQL Language Reference.
Voir aussi : Oracle Database PL/SQL Language Reference, pour plus d'informations sur les déclencheurs.