Контекстные переменные NEW и OLD
В DML триггерах Firebird обеспечивает доступ к множеству контекстных переменных NEW и OLD.Каждое множество является массивом всей строки: OLD.* — значение строки до изменения данных и NEW.* — требуемое ("новое") значение строки.Операторы могут ссылаться на них использую следующие формы NEW.columname и OLD.columnname.columnname может быть любым столбцом определённым в таблице(представлении), а не только тем что был изменён.
Контекстные переменные NEW и OLD подчиняются следующим правилам:
-
Во всех триггерах контекстные переменные
OLDдоступны только для чтения; -
В триггерах
BEFORE UPDATEиBEFORE INSERTпеременныеNEWдоступны для чтения и записи, за исключениемCOMPUTED BYстолбцов; -
В
INSERTтриггерах ссылка на переменныеOLDне допускается и вызовет исключение; -
В
DELETEтриггерах ссылка на переменныеNEWне допускается и вызовет исключение; -
Во всех
AFTERтриггерах переменныеNEWдоступны только для чтения.