Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML. Токмаков Г.П. - 146 стр.

UptoLike

Составители: 

146
CREATETRIGGERтриггер{BEFORE|AFTER}{событие[ORсобытие
...]}
ONтаблица
FOREACH{ROWSTATEMENT}
EXECUTEPROCEDUREфункция(аргументы)
Ниже приводятся краткие описания компонентов этого определения.
CREATE TRIGGER триггер. В аргументе триггер указывается произвольное имя
создаваемого триггера. Имя может совпадать с именем триггера, уже существую-
щего в базе данныхпри условии, что этот триггер установлен для другой таб-
лицы. Кроме того, по аналогии с большинством других несистемных объектов баз
данных, имя триггера (в сочетании с таблицей, для которой
он устанавливается)
должно быть уникальным лишь в контексте базы данных, в которой он создается.
{BEFORE AFTER}. Ключевое слово BEFORE означает, что функция должна вы-
полняться перед попыткой выполнения операции, включая все встроенные про-
верки ограничений данных, реализуемые при выполнении команд
INSERT и DELETE.
Ключевое слово
AFTER означает, что функция вызывается после завершения опе-
рации, приводящей в действие триггер.
{событие [OR событие ... ]}. События SQL, поддерживаемые в PostgreSQL При
перечислении нескольких событий в качестве разделителя используется ключевое
слово
OR.
ON таблица. Имя таблицы, модификация которой заданным событием при-
водит к срабатыванию триггера.
FOR EACH {ROW STATEMENT}. Ключевое слово, следующее за конструкцией FOR
EACH и определяющее количество вызовов функции при наступлении указанного
события. Ключевое слово
ROW означает, что функция вызывается для каждой мо-
дифицируемой записи. Если функция должна вызываться всего один раз для всей
команды, используется ключевое слово
STATEMENT.
EXECUTE PROCEDURE функция ( аргументы ). Имя вызываемой функции с ар-
гументами.
ПРИМЕЧАНИЕ. Создание триггеров разрешено только владельцу базы данных или суперполь-
зователю.
Механизм ограничений PostgreSQL позволяет реализовать простое сравне-
ние данных со статическими значениями, но иногда проверка входных данных
должна производиться по более сложным критериям. Это типичный пример си-
туации, в которой удобно воспользоваться триггером.
Проверка входных данных с применением триггеров может осуществляться
перед вставкой данных в таблицу или перед их обновлением в таблице. Функ-
ция триггера может убедиться в том, что новые данные удовлетворяют сложной
системе ограничений, и даже вернуть признак ошибки через систему регистра-
ции ошибок
PostgreSQL.
Предположим, вы написали на процедурном языке функцию, которая про-
веряет данные, переданные при вызове команды
INSERT или UPDATE для таблицы
shipments, и затем обновляет таблицу stock, снимая поставленный товар со
складского учета. Такую функцию можно написать на любом языке, поддержи-
ваемом
PostgreSQL (кроме «чистого» SQL, о чем говорилось выше).