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

UptoLike

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

145
IFcustomer_id=‐1THEN
RETURN‐1;
ENDIF;
‐‐ПолучитькодкнигисзаданнымкодомISBN.
SELECTINTObook_idFROMeditionsWHEREisbn=book_isbn;
‐‐Еслиданныекнигиотсутствуютвбазе,вернуть‐1.
IFNOTFOUND
THEN
RETURN‐1;
ENDIF;
‐‐Есликнигаипокупательсуществуют.
‐‐сохранитьинформациюопоставкевбазе.
PERFORMadd_shipment(customer_id,book_isbn);
‐‐Вернуть1‐признакуспешноговыполненияфункции.
RETURN1;
END;
'LANGUAGE'plpgsql';
6.2. ТРИГГЕРЫ
Довольно часто перед некоторыми событиями
SQL или после них должны
выполняться определенные операции например, проверка логической целост-
ности данных, заносимых в базу, предварительное форматирование данных пе-
ред вставкой или модификация других таблиц, логически обусловленная уда-
лением или модификацией записей. Традиционно такие операции выполнялись
на программном уровне приложением, подключившимся к базе данных, а не
самой СУБД.
В PostgreSQL поддерживаются нестандартные расширения, называемые
триггерами (trigger) и упрощающие взаимодействие приложения с базой дан-
ных. Триггер определяет функцию, которая должна выполняться до или после
некоторой операции с базой данных. Триггеры реализуются на языке
С,
PL/pgSQL или любом другом функциональном языке (кроме SQL), который мо-
жет использоваться в
PostgreSQL для определения функций.
ВНИМАНИЕ. Триггеры относятся к числу специфических расширений PostgreSQL, поэтому их
не рекомендуется использовать в решениях, требующих высокой степени совместимости с другими
РСУБД.
Триггеры срабатывают при выполнении с таблицей команды SQL INSERT,
UPDATE или DELETE.
6.2.1. С
ОЗДАНИЕ ТРИГГЕРА
Триггер создается на основе существующей функции. PostgreSQL позволяет
создавать функции на разных языках программирования, в том числе на
SQL,
PL/pgSQL и С. В PostgreSQL 7.1.x триггеры могут вызывать функции, написан-
ные на любом языке, но за одним исключением: функция не может быть полно-
стью реализована на
SQL.
В определении триггера указывается, должна ли заданная функция вызы-
ваться до или после выполнения некоторой операции с таблицей. Синтаксис
определения триггера выглядит так: