Контекстные переменные 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
доступны только для чтения.