OLD
and NEW
Context Variables
For DML triggers, the Firebird engine provides access to sets of OLD
and NEW
context variables (or, “records”).Each is a record of the values of the entire row: one for the values as they are before the data-changing event (the BEFORE
phase) and one for the values as they will be after the event (the AFTER
phase).They are referenced in statements using the form NEW.column_name
and OLD.column_name
, respectively.The column_name can be any column in the table’s definition, not just those that are being updated.
The NEW
and OLD
variables are subject to some rules:
-
In all triggers,
OLD
is read-only -
In
BEFORE UPDATE
andBEFORE INSERT
code, theNEW
value is read/write, unless it is aCOMPUTED BY
column -
In
INSERT
triggers, references toOLD
are invalid and will throw an exception -
In
DELETE
triggers, references toNEW
are invalid and will throw an exception -
In all
AFTER
trigger code,NEW
is read-only