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 automatiquement exécutée en réponse à un événement indiqué.

Les déclencheurs présentent 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 a été 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 :

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 :

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 AI 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, la base de données 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 appliqué dès qu'un client ajoute les données à la table, aucun client ne peut contourner les règles. Le code appliqué aux règles peut être stocké et maintenu au niveau du déclencheur, plutôt que dans chaque application client. Pour connaître les autres utilisations des déclencheurs, reportez-vous au manuelOracle AI Database PL/SQL Language Reference.

Voir aussi : Référence du langage PL/SQL d'Oracle AI Database pour obtenir des informations complètes sur les déclencheurs