FirebirdSQL logo

Nouvelles et anciennes variables de contexte

Dans les triggers DML, Firebird donne accès à un ensemble de variables contextuelles NEW et OLD.Chaque ensemble est un tableau de la chaîne entière : OLD.* — la valeur de la chaîne avant la modification des données et NEW.* — la valeur de la chaîne requise ("nouvelle").Les Instructions peuvent s’y référer en utilisant les formes suivantes : NEW.columnname et OLD.columnname.La colonne columnname_ peut être n’importe quelle colonne définie dans la table (vue), pas seulement celle qui a été modifiée.

Les variables de contexte NEW et OLD obéissent aux règles suivantes :

  • Dans tous les déclencheurs, les variables de contexte OLD sont en lecture seule ;

  • Dans les déclencheurs BEFORE UPDATE et BEFORE INSERT, les variables NEW sont en lecture seule et en écriture seule sauf pour les colonnes COMPUTED BY ;

  • Dans les déclencheurs INSERT, la référence aux variables OLD n’est pas autorisée et lèvera une exception ;

  • Dans les déclencheurs DELETE, la référence aux variables NEW n’est pas autorisée et soulèvera une exception ;

  • Dans tous les déclencheurs AFTER, les variables NEW sont en lecture seule.

Déclencheurs sur les événements de la base de données

Un déclencheur associé à un événement de la base de données peut être déclenché lorsque les événements suivants se produisent :

Après la connexion à la base de données, ou la réinitialisation de l’environnement de session

ON CONNECT

Une transaction par défaut est automatiquement lancée avant l’exécution du déclencheur.

Avant de se déconnecter de la base de données ou de réinitialiser l’environnement de la session

ON DISCONNECT

Une transaction par défaut est automatiquement lancée avant l’exécution du déclencheur.

Une fois que la transaction a commencé

ON TRANSACTION START

Le déclencheur est exécuté dans le contexte de la transaction en cours.

Avant de confirmer la transaction

ON TRANSACTION COMMIT

Le déclencheur est exécuté dans le contexte de la transaction en cours.

Avant d’annuler une transaction

ON TRANSACTION ROLLBACK

Le déclencheur est exécuté dans le contexte de la transaction en cours.

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