Иллюстрированный самоучитель по PostgreSQL

CRЕАТЕ TRIGGER

Создание нового триггера.

Синтаксис:

CREATE TRIGGER триггер { BEFORE | AFTER } { событие [ OR событие… ] }
ON таблица
FOR EACH { ROW STATEMENT }
EXECUTE PROCEDURE функция (аргументы)

Параметры:

  • триггер. Имя создаваемого триггера.
  • таблица. Имя таблицы, с которой ассоциируется триггер.
  • событие. Событие, по которому срабатывает триггер. Допустимые значения – INSERT, DELETE и UPDATE. Триггер может быть связан с несколькими событиями.
  • функция. Имя функции, связываемой с новым триггером. Функция вызывается при срабатывании триггера; в определении должен быть указан тип возвращаемого значения opaque – этот тип используется только внутренними функциями, которые не могут напрямую вызываться в командах SQL.
  • аргументы. Строка аргументов, передаваемая функции при срабатывании триггера.

Результаты:

CREATE. Это сообщение выдается при успешном создании нового триггера.

Описание

Команда CREATE TRIGGER создает триггер в базе данных. Триггер ассоциируется с таблицей, указанной в секции ON. При срабатывании триггера автоматически выполняется заданная функция.

Примечание
Триггеры могут создаваться только владельцами таблиц или суперпользователями
.

При создании триггера необходимо выбрать время срабатывания (до или после попытки выполнения некоторой операции). Если триггер срабатывает до заданного события (BEFORE), он может отменить выполнение операции для текущей записи или изменить данные, заносимые в таблицу. Если триггер срабатывает после заданного события (AFTER), он будет знать обо всех изменениях, внесенных в результате события.

Примеры

Следующая команда определяет триггер, вызываемый при обновлении существующей записи в таблице authors:

booktown=# CREATE TRIGGER sync_authors_books
Dooktown-# BEFORE UPDATE
booktown-# ON authors
booktown-# FOR EACH ROW
booktown-# EXECUTE PROCEDURE sync authors and booksO;
CREATE

Функция PL/pgSQL sync_authors_and_books () обновляет значение поля author_id таблицы books при обновлении ноля id в таблице authors. Тем самым поддерживается синхронизация таблиц books и authors. Аналогичного эффекта можно было бы добиться при помощи ограничения FOREIGN KEY (см. главу 7).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.