
- •Понятия локальной сети, сервера, рабочей станции
- •Модель распределенной базы данных: назначение и описание
- •Назначение и основные характеристики технологий bde
- •Модель сервера приложений: назначение и описание
- •Файл - серверные субд: назначение и описание
- •Базовая технология com: понятие и создание объекта, интерфейсы объекта, библиотека классов com
- •Модель сервера баз данными: назначение и описание
- •Модель удаленного доступа к данным: назначение и описание
- •Назначение и формат запросов на добавление, редактирование и удаление данных
- •Структура файла баз данных
- •Модель удаленного управления данными: назначение и описание (смотреть вопрос 6)
- •Основные события класса tsqlSimplDataSet среды Delphi
- •Распределенные системы управления базами данных: назначение и описание
- •Преимущества, недостатки и место применения трехзвенной архитектуры Обзор архитектуры
- •Достоинства
- •Недостатки
- •Понятие хранимой процедуры, триггера и генератора в базах данных
- •Модель распределенного представления
- •Агрегатные функции: назначение и описание
- •Виды триггеров в базах данных, их назначение.
- •Назначение и виды хранимых процедур в базах данных
- •Понятие и назначение ссылочной целостности в базах данных
Понятие хранимой процедуры, триггера и генератора в базах данных
Храни́мая процеду́ра — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. В хранимых процедурах могут выполняться стандартные операции с базами данных (как DDL, так и DML). Кроме того, в хранимых процедурах возможны циклы и ветвления, то есть в них могут использоваться инструкции управления процессом исполнения.
Хранимые процедуры похожи на определяемые пользователем функции (UDF). Основное различие заключается в том, что пользовательские функции можно использовать как и любое другое выражение в SQL запросе, в то время как хранимые процедуры должны быть вызваны с помощью функции CALL:
Хранимые процедуры могут возвращать множества результатов, то есть результаты запроса SELECT. Такие множества результатов могут обрабатываться, используя курсоры, другими сохраненными процедурами, возвращая указатель результирующего множества, либо же приложениями. Хранимые процедуры могут также содержать объявленные переменные для обработки данных и курсоров, которые позволяют организовать цикл по нескольким строкам в таблице. Стандарт SQL предоставляет для работы выражения IF, LOOP, REPEAT, CASE и многие другие. Хранимые процедуры могут принимать переменные, возвращать результаты или изменять переменные и возвращать их, в зависимости от того, где переменная объявлена.
Реализация хранимых процедур варьируется от одной СУБД к другой. Большинство крупных поставщиков баз данных поддерживают их в той или иной форме. В зависимости от СУБД, хранимые процедуры могут быть реализованы на различных языках программирования, таких, как SQL, Java, C или C++. Хранимые процедуры написанные не на SQL могут самостоятельно выполнять SQL-запросы, а могут и не выполнять. Все более широкое использование хранимых процедур привело к появлению процедурных элементов в языке SQL стандарта SQL:1999 и SQL: 2003 в части SQL/PSM. Это сделало SQL императивным языком программирования. Большинство СУБД предлагают собственные проприетарные и расширения производителя, сверх SQL/PSM.
Генераторы предназначены для получения последовательностей уникальных чисел. Например - 1, 2, 3..., 10, 20, 30, и т.п. Такие числа обычно используются как идентификаторы записи в таблицах, имеющих суррогатный (абстрактный) первичный ключ. Например, в таблице клиентов для их нумерации введен столбец CLIENT_ID INTEGER, по которому построен первичный ключ. Столбец можно заполнять значениями генератора.
Нужно сразу заметить, что сами по себе генераторы не обеспечивают сохранение последовательности номеров в случае удаления записей - генератор всего лишь выдает числа по очереди увеличивая их на некоторую величину и обеспечивая уникальность выданных значений. То есть, генератор выглядит как переменная типа integer (в первом диалекте, или int64 в третьем диалекте), которая находится в памяти, и над которой можно выполнять операции Inc и Dec. Если вам требуется обеспечить непрерывные последовательности идентификаторов записей даже в случае их удаления или модификации, то вам нужно обратиться к статье Auditable series of numbers (непрерывные последовательности чисел). В любом случае это задача приложения и сервера, и выходит за рамки данного описания.
Генератор - это специальный объект базы данных, который генерирует уникальные последовательные числа. Эти числа могут быть использованы в качестве идентификаторов (например код клиента, номер счета и т.п.).