2.1.3. Хранимые процедуры и триггеры


Язык SQL содержит подмножество языковых средств, называемое языком хранимых процедур и триггеров PSQL. В этом подмножестве можно описывать, каким именно образом выбирается очередная запись из базы данных, что нужно сделать с отдельными столбцами этой записи. В языке хранимых процедур и триггеров существует, как и в обычных языках программирования, возможность описания внутренних переменных, оператор присваивания, операторы ветвления, операторы циклов и другие императивные средства. Язык допускает рекурсию, т. е. тот случай, когда программа вызывает саму себя.

Этот язык используется при создании хранимых процедур, функций и триггеров.
Элементы языка (объявление локальных переменных, операторы ветвления и циклов) также могут быть использованы и в обычных скриптах при работе с базой данных. Такая возможность существует не во всех системах управления базами данных.

Хранимые процедуры (stored procedure) являются программами, хранящимися в базе данных и выполняющими различные действия, обычно с данными из базы данных, хотя процедуры могут и не осуществлять никаких обращений к базе. К хранимым процедурам могут обращаться любые программы, работающие с базой данных, к ним также могут обращаться и другие хранимые процедуры и триггеры.

Допустима и рекурсия, когда хранимая процедура обращается к самой себе. Хранимые процедуры выполняются на стороне сервера, а не на стороне клиента. Во многих случаях это может резко снизить сетевой трафик при решении различных задач работы с базой данных и повысить производительность системы.

Функции, определенные пользователем (user defined functions, UDF). Это программные компоненты, к которым можно обращаться из триггеров, хранимых процедур, из других программных компонентов. Функции выполняют конкретные действия и возвращают ровно одно значение.

Триггеры (trigger), так же как и хранимые процедуры, являются программами, выполняющимися на стороне сервера. Однако напрямую обращение к триггерам невозможно. Они автоматически вызываются при наступлении некоторого события базы данных — например, при добавлении, изменении или удалении строк конкретной таблицы. Триггеры могут вызываться при соединении с базой данных, а также в некоторых других случаях.

События базы данных (event). Хранимые процедуры и триггеры могут выдавать события — сообщения о появлении некой ситуации базы данных; такие сообщения могут перехватываться и обрабатываться клиентскими программами. Событиями могут быть ошибки в базе данных, которые выявляются не декларативным, а императивным способом — т. е. не при описании ограничений, таких как связка "внешний ключ/первичный (уникальный) ключ", а при выполнении более сложных проверок на соответствие вводимых данных требованиям предметной области. Часто события создаются при простых действиях с базой данных: при добавлении, изменении или удалении данных из конкретной таблицы. Они дают возможность проинформировать других клиентов о выполненных действиях. Такие события бывают полезными при синхронизации работы нескольких клиентов с одними и теми же данными в базе данных. 

Похожие новости

Комментариев 0

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.