Шифрование и секретность в Linux

Специальные переменные в триггерных функциях



Таблица 11.2. Специальные переменные в триггерных функциях



Имя

Тип данных

Описание

NEW

RECORD

Новая запись базы данных, созданная командой INSERT или UPDATE при срабатывании триггера уровня записи (ROW). Переменная используется для модификации новых записей

OLD

RECORD

Старая запись базы данных, оставшаяся после выполнения команды INSERT или UPDATE при срабатывании триггера уровня записи (ROW)

TGJAME

name

Имя сработавшего триггера

TG_WHEN

text

Строка BEFORE или AFTER в зависимости от момента срабатывания триггера, указанного в определении (до или после операции)

TG_LEVEL

text

Строка ROW или STATEMENT в зависимости от уровня триггера, указанного в определении

TG_OP

text

Строка INSERT, UPDATE или DELETE в зависимости от операции, вызвавшей срабатывание триггера

TG_RELID

old

Идентификатор объекта таблицы, в которой сработал триггер

TG_RELNAME

name

Имя таблицы, в которой сработал триггер

TG_NARGS

Integer

Количество аргументов триггерной функции, указанных в определении триггера

TG_ARGV[]

Массив text

Аргументы, указанные в команде CREATE TRIGGER. Индексация массива начинается с нуля

В листинге 11.52 приведен пример определения трнггерной функции PL/pgSDL, использующей некоторые из перечисленных переменных. Триггерная функция check_shipment_addition() вызывается после выполнения операции INSERT или UPDATE с таблицей shipments.

Функция check_shipment_addition() убеждается в том, что каждая новая запись содержит действительный код покупателя и код ISBN книги. Затем общее количество экземпляров в таблице stock уменьшается на 1, если триггер сработал по команде SQL INSERT (но не по команде UPDATE!)



Содержание раздела