FirebirdSQL logo
 VIEWPROCEDURE 

Déclencheurs sur un événement de la base de données

Un déclencheur peut être créé pour l’un des événements de la base de données :

  • CONNECT (connexion à la base de données ou après réinitialisation de la session) ;

  • DISCONNECT (déconnexion de la base de données ou avant la réinitialisation de la session) ;

  • TRANSACTION START (début de transaction) ;

  • TRANSACTION COMMIT (confirmation de la transaction) ;

  • TRANSACTION ROLLBACK (retour en arrière de la transaction).

La variable de contexte RESETTING peut être utilisée dans les déclencheurs des événements CONNECT et DISCONNECT pour distinguer la réinitialisation de la session de la connexion/déconnexion de la base de données.

Il n’est pas possible de spécifier plus d’un événement de base de données pour un déclencheur.

Exécution de déclencheurs d’événements de base de données et traitement des exceptions

Les déclencheurs sur les événements CONNECT et DISCONNECT sont exécutés dans une transaction spécialement créée à cet effet.Si aucune exception n’est levée lors du traitement du déclencheur, la transaction est acquittée.Les exceptions non vérifiées annuleront la transaction et :

  • dans le cas d’un déclencheur d’événement CONNECT, la connexion est rompue et des exceptions sont renvoyées au client ;

  • Pour un événement déclencheur DISCONNECT, la connexion est terminée comme prévu, mais les exceptions ne sont pas renvoyées au client.

Les déclencheurs d’événements CONNECT et DISCONNECT sont également déclenchés lorsque l’instruction de réinitialisation de l’environnement de session est exécutée.Voir la section ALTER SESSION RESET pour les particularités de la gestion des erreurs dans les déclencheurs des événements CONNECT et DISCONNECT.

Les déclencheurs sur les événements de transaction sont déclenchés au début de la transaction, à sa confirmation ou à son retour.Les exceptions non vérifiées sont traitées en fonction du type d’événement :

  • pour l’événement TRANSACTION START, l’exception est renvoyée au client et la transaction est annulée ;

  • pour l’événement TRANSACTION COMMIT, l’exception est retournée au client, l’action effectuée par le déclencheur et la transaction sont annulées ;

  • Pour l’événement TRANSACTION ROLLBACK, l’exception n’est pas renvoyée au client et la transaction est annulée comme prévu.

Pièges

Il résulte de ce qui précède qu’il n’y a pas de moyen direct de savoir quel déclencheur (DISCONNECT ou ROLLBACK) a soulevé l’exception.Il est également clair que vous ne pouvez pas vous connecter à la base de données lorsqu’il y a une exception dans le déclencheur d’événements CONNECT, et le démarrage d’une transaction est également annulé lorsqu’il y a une exception dans le déclencheur d’événements TRANSACTION START.Dans les deux cas, la base de données est effectivement verrouillée jusqu’à ce que vous désactiviez les déclencheurs de la base de données et corrigiez le code erroné.