Триггерные предикаты. Если в триггере указывается совокупность
активизирующих триггер DML-операторов (например, INSERT OR DE-
LETE), то для распознавания того, какой конкретно из DML-операторов
выполняется над связанной с триггером таблицей, используются триг-
герные предикаты: INSERTING, DELETING, UPDATING. Они представ-
ляют собой логические функции, возвращающие TRUE, если тип активи-
зирующего оператора совпадает с типом предиката, и FALSE – в против-
ном случае. Для задания одних и тех же действий в случае выполнения
различных DML-операторов в условном операторе триггерные предика-
ты объединяются с помощью логических операций.
Псевдозаписи. Для строковых триггеров существуют специальные
конструкции, которые позволяют при выполнении DML-операторов над
строкой таблицы обращаться как к старым значениям, которые находи-
лись в ней до модификации, так и к новым, которые появятся в строке
после ее модификации. Эти конструкции называются псевдозаписями и
обозначаются old и new. Структура этих псевдозаписей идентична струк-
туре строки модифицируемой таблицы, но оперировать можно только
отдельными полями псевдозаписи. Обращение к полям псевдозаписи
происходит по следующей схеме: перед old или new ставится символ
двоеточие (:), далее через точку указывается название поля. Значения,
которые принимают поля псевдозаписи при выполнении активизирую-
щих
DML-операторов, определяются следующим образом.
1. Оператор INSERT – псевдозапись :new эквивалентна вставляемой
строке, а псевдозапись :old во всех полях имеет значение NULL.
2. Оператор DELETE – псевдозапись :old эквивалентна удаляемой
строке, а псевдозапись :new во всех полях имеет значение NULL.
3. Оператор UPDATE – псевдозапись :new эквивалентна строке, по-
лученной в результате модификации, а псевдозапись :old во всех полях
имеет исходное значение строки.