À propos des déclencheurs

Un déclencheur est une unité PL/SQL stockée dans la base de données et (si elle est à l'état Activé) s'exécute automatiquement (lance) en réponse à un événement spécifié.

Un déclencheur a la structure suivante :

TRIGGER trigger_name
  triggering_event
  [ trigger_restriction ]
BEGIN
  triggered_action;
END;

Le nom_trigger doit être unique pour les déclencheurs dans le schéma. Un déclencheur peut avoir le même nom qu'un autre type d'objet dans le schéma (par exemple, une table). Toutefois, Oracle recommande d'utiliser une convention d'attribution de nom qui évite toute confusion.

Si le déclencheur est à l'état activé, l'événement triggering_event entraîne l'exécution de l'action trigger_action par la base de données si la restriction trigger_restriction est TRUE ou omise. L'événement triggering_event est associé à une table, à une vue, à un schéma ou à une base de données. Il s'agit de l'un des éléments suivants :

Si le déclencheur est à l'état désactivé, l'événement triggering_event n'entraîne pas l'exécution de l'action trigger_action par la base de données, même si la restriction trigger_restriction est VRAI ou omise.

Par défaut, un déclencheur est créé à l'état Activé. Vous pouvez désactiver un déclencheur activé et activer un déclencheur désactivé.

Contrairement à un sous-programme, un déclencheur ne peut pas être appelé directement. Un déclencheur n'est appelé que par son événement déclencheur, qui peut être causé par n'importe quel utilisateur ou application. Vous ne savez peut-être pas qu'un déclencheur est en cours d'exécution, sauf s'il provoque une erreur qui n'est pas traitée correctement.

Un déclencheur simple peut s'exécuter exactement à l'un de ces points de temps :

Un déclencheur composé peut être déclenché à plusieurs points de synchronisation. Pour plus d'informations sur les déclencheurs composés, voir Informations de référence sur le langage PL/SQL pour Oracle Database.

Un déclencheur INSTEAD OF est défini sur une vue et son événement déclencheur est un énoncé LMD. Au lieu d'exécuter l'instruction LMD, Oracle Database exécute le déclencheur INSTEAD OF. Pour plus d'informations, voir "Création d'un INSTEAD OF Trigger".

Un déclencheur système est défini sur un schéma ou une base de données. Un déclencheur défini sur un schéma est déclenché pour chaque événement associé au propriétaire du schéma (l'utilisateur courant). Un déclencheur défini sur une base de données est déclenché pour chaque événement associé à tous les utilisateurs.

Les déclencheurs permettent d'appliquer des règles métier qui s'appliquent à toutes les applications client. Par exemple, supposons que les données ajoutées à la table EMPLOYEES doivent avoir un certain format et que de nombreuses applications client peuvent ajouter des données à cette table. Un déclencheur sur la table peut garantir le format approprié de toutes les données qui y sont ajoutées. Etant donné que le déclencheur s'exécute chaque fois qu'un client ajoute des données à la table, aucun client ne peut contourner les règles, et le code qui applique les règles ne peut être stocké et tenu à jour que dans le déclencheur, plutôt que dans chaque application client. Pour d'autres utilisations des déclencheurs, voir Informations de référence sur le langage PL/SQL pour Oracle Database.

Voir aussi : Informations de référence sur le langage PL/SQL pour Oracle Database pour obtenir des informations complètes sur les déclencheurs