Kontextvariablen OLD und NEW
Für DML-Trigger bietet die Firebird-Engine Zugriff auf Sätze von 'OLD'- und 'NEW'-Kontextvariablen.Jeder ist ein Array der Werte der gesamten Zeile: einer für die Werte, wie sie vor dem Datenänderungsereignis sind (die 'BEFORE'-Phase) und einer für die Werte, wie sie nach dem Ereignis (die 'AFTER'-Phase) sein werden ).Sie werden in Anweisungen in der Form NEW.column_name bzw. OLD.column_name referenziert.Der column_name kann eine beliebige Spalte in der Tabellendefinition sein, nicht nur die, die aktualisiert werden.
Die Variablen NEW und OLD unterliegen einigen Regeln:
-
In allen Triggern ist der 'OLD'-Wert schreibgeschützt
-
In
BEFORE UPDATE- undBEFORE INSERT-Code ist derNEW-Wert lesen/schreiben, es sei denn, es handelt sich um eineCOMPUTED BY-Spalte -
In
INSERT-Triggern sind Verweise auf dieOLD-Variablen ungültig und lösen eine Ausnahme aus -
In
DELETE-Triggern sind Verweise auf dieNEW-Variablen ungültig und lösen eine Ausnahme aus -
In allen 'AFTER'-Triggercodes sind die 'NEW'-Variablen schreibgeschützt