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.