Триггеры и их назначение. Команды создания, удаления и модификации триггеров и хранимых процедур. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Триггеры и их назначение. Команды создания, удаления и модификации триггеров и хранимых процедур.



Триггер – это отдельная хранимая в базе подпрограмма, связанная с таблицей или обзором (представлением), которая автоматически включается, когда в таблицу ли обзор вставляется (триггер добавления), модифицируется (триггер модификации) или удаляется (триггер удаления) строка.

Триггер никогда не вызывается непосредственно. Он выполняется всякий раз, когда приложение или пользователь пытаются вставлять, модифицировать или удалять строку в таблице. Триггер жестко связан с данными и выполняется тогда и только тогда, когда делается попытка изменить данные.

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

Триггеры позволяют:

Ü Контролировать входные данные, обеспечивая повышение достоверности информации и ее логическую непротиворечивость.

Ü Повысить независимость прикладного программного обеспечения. Изменение схемы контроля в триггере автоматически отображается во всех приложениях, не требуя ни внесения в них каких-либо изменений, ни их перетрансляции.

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

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

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

Триггеры создаются командой CREATE TRIGGER, модифицируются командой ALTER TRIGGER и удаляются командой DROP TRIGGER.

Триггер состоит из заголовка и тела.

Заголовок содержит:

ü Имя триггера, уникальное в пределах базы данных.

ü Имя таблицы, для которой создается триггер.

ü Действия с таблицей, при наступлении которых триггер включается.

Тело триггера содержит:

ü Необязательный список локальных переменных с указанием их типов.

ü Программный блок на языке процедур и триггеров InterBase (набор инструкций в операторных скобках BEGIN …END). Программный блок выполняется при включении триггера. Блок может включать в себя другие блоки.

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

Хранимая процедура может также вызываться непосредственно из приложения или других хранимых процедур или триггеров. Хранимые процедуры, возвращающие множество строк, можно использовать в команде SELECT на месте таблиц или обзоров.

Использование хранимых процедур дает ряд преимуществ:

¯ Модульность проектирования. Приложения, которые обращаются к одной базе данных, могут совместно использовать хранимые процедуры, устраняя двойной код, уменьшая размер приложений и устраняя потенциальные ошибки.

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

¯ Ускорение обработки. Хранимые процедуры выполняются сервером, а не клиентом, что позволяет ускорить обработку запросов и сократить сетевой трафик.

Процедуры по своему назначению разделяются на два вида: выполнимые процедуры и процедуры выбора.

Выполнимая процедура – это обычная программа, которая получает несколько (возможно и не получает) параметров, выполняет какие-либо действия в базе данных и возвращает несколько (возможно и не возвращает) значений.

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

Работа с BLOB и функции, определенные пользователем

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

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

· Растровые или векторно-графические файлы;

· Звуковые файлы;

· Интерактивные аудио-видео файлы;

· Текстовые файлы

· Файлы CAD.

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

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

К UDF можно обращаться из программ на базовом языке, а также из хранимых процедур и триггеров.

Пользовательские функции не являются частью базы. Они помещаются в отдельную библиотеку (DLL), находящуюся на той же машине, что и база данных. Чтобы сделать функции доступными в базе, их надо в ней объявить. После этого, обращение к ним осуществляется точно так же, как к стандартным функциям InterBase. Вызов этих функций может производится везде, где синтаксисом SQL предусмотрено использование выражений

Объявление внешней функции

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

Синтаксис объявления внешней функции:

DECLARE EXTERNAL FUNCTION <имя функции>

[<список типов данных входных параметров>]

RETURNS {<тип данных> [ BY VALUE ] | CSTRING (int)}

[ FREE IT ]

ENTRY_POINT ‘имя функции в библиотеке’

MODULE_NAME ‘имя файла библиотеки’;

Синтаксические контсрукции объявления внешних функций:

Конструкция Описание
имя функции Имя UDF для использования в командах SQL; может отличаться от имени (в библиотеке) указанной после слова ENTRY_POINT
список типов данных Может принимать значение либо <тип данных> либо CSTRING (int)
тип данных Любой разрешенный в InterBase тип данных, кроме массивов и BLOB. Тип данных входного параметра или возвращаемого значения. Все входные параметры передаются в UDF по ссылке. Возвращаемые значения могут передаваться как по ссылке, так и по значению. Использование элементов массивов запрещено.
RETURNS Определяет возвращаемое функцией значение
BY VALUE Указывает на то, что параметр возвращается по значению. Если конструкция пропущена, то значение возвращается по ссылке.
CSTRING (int) Специальный тип для представления строк, представляющий собой последовательность символов, заканчивающуюся двоичным нулем.
FREE IT Указывает на необходимость освобождения памяти, выделенной UDF для возвращаемого значения, передаваемого по ссылке. Необходимость для такой конструкции вызвана тем, что запрос памяти производится в UDF, а освобождение выполняется в InterBase.
имя функции в библиотеке Заключенное в кавычки имя имя функции, как оно записано в библиотеке.
имя файла библиотеки Спецификация файла, идентифицирующая библиотеку, которая содержит UDF. Текс должен заключаться в кавычках. » Библиотека должна постоянно находиться на сервере; путь должен относиться к местоположению на сервере. » На любой платформе модуль может быть указан без имени пути, если он находится в путь_InterBase/ Lib. » Следует использовать полное имя файла библиотеки, включая расширение, даже если имя пути не указано.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 764; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.73.229 (0.016 с.)