Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Умк_Базы.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.2 Mб
Скачать

5.2.3. Хранимые запросы

Триггеры и хранимые процедуры и представления являются неотъемлемой частью серверных СУБД.

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

Представление – это виртуальная таблица, предоставляющая данные из одной или нескольких реальных таблиц базы данных. Представление не содержит никаких данных, а только описывает их источник; фактически представление – хранимый запрос.

Преимущества представлений:

  • позволяют просматривать различным пользователям данные разными способами в одно и тоже время;

  • обеспечение безопасности данных (возвращение пользователям данных в зависимости от категории (имени) пользователя);

  • для скрытых данных обеспечивается автоматическая защита.

Хранимые процедуры

Хранимые процедуры – скомпилированный набор SQL предложений, сохраненный в базе данных как именованный объект и выполняющийся как единый фрагмент программного кода. Отдельные процедуры могут иметь параметры и возвращать значения. Созданная пользователем процедура компилируется сервером, а затем откомпилированный программный код может быть использован любым пользователем (рис. 5.1).

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

Рис. 5.1. Вызов хранимой процедуры клиентским приложением

  • эти процедуры требуют меньше времени для подготовки и выполнения по сравнению с обычными SQL-запросами, посылаемыми из клиентских приложений;

  • уменьшается сетевой трафик, т.к. по сети предается меньший объем информации;

  • хранимые процедуры автоматически перекомпилируются в том случае, если объекты, входящие в состав процедуры, претерпевают изменения; т.о. хранимые процедуры всегда актуальны;

  • возможно задание различных входных наборов данных для одной хранимой процедуры, если она имеет параметры;

  • процедуры применяются для поддержки ограничений целостности и реализации бизнес-правил; это обеспечивает большую гибкость системе, т.к. при модификации бизнес-правил изменяются только процедуры, а не клиентские процедуры.

Кроме процедур, используемых в клиентских приложениях, СУБД имеет системные хранимые процедуры; они могут использоваться для выполнения следующих задач:

  • вывод и изменения глобальных конфигураций сервера;

  • получение сведений о поддерживаемых типах данных;

  • получение сведений об объектах базы данных;

  • вывод статистики СУБД;

  • вывод сведений обо всех базах данных, доступных данному серверу.

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

Триггеры

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

Большинство СУБД позволяют создавать несколько триггеров для одного и того же события. Триггеры часто создают для поддержки ограничений целостности, каскадного удаления/изменения данных, для архивирования удаленных данных. Поскольку триггер вызывается автоматически самой СУБД, его нельзя вызвать их клиентского приложения – можно только инициировать действия, активизирующие триггер. Триггеры, опосредованно вызывающие другие триггеры, называются вложенными.

Рис. 5.2. Автоматический вызов триггера

Триггер всегда выполняет некоторое действие и никогда не возвращает пользователю данные.