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