Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция спбд.docx
Скачиваний:
59
Добавлен:
14.09.2019
Размер:
223.04 Кб
Скачать

Триггеры

Триггер представляет собой процедуру, которая находится на сервере БД и вызывается автоматически при модификации записей БД. В отличии от хранимых процедур триггеры нельзя вызывать из приложения клиента, а так же передавать им параметры и получать от них результаты. Шаблон создания триггера:

CREATE TRIGGER trigger_name FROM {table_name|view_name}

[ACTIVE | INACTIVE]

{BEFORE | AFTER} {DELETE | INSERT | UPDATE}

[POSITION number]

AS {trigger_body}

Оператор CREATE TRIGGER вводит определение триггера, которое состоит из заголовка и тела триггера. В заголовке указывается имя триггера, имя таблицы или представления, с которым/ой связывается триггер, а так же информация о том, когда и какие действия должны выполняться. Тело триггера включает необязательный список объявление переменных, а так же набор операторов на языке триггеров и процедур InterBase, заключенных в операторные скобки BEGIN … END.

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

Следующие две группы ключевых слов задают шесть вариантов событий, при наступлении которых триггер активизируется: BEFORE DELETE – перед удалением, BEFORE INSERT – перед вставкой, BEFORE UPDATE – перед обновления, или же AFTER – перед этими действиями.

С одной и той же таблицей может быть связано несоклько триггеров. Для того, чтобы определить очередности их автивизации в заголовке можно указать конструкцию POSITION. В этой конструкции указывается целое неотрицательное число. Чем это число меньше, тем раньше выполняется триггер. Тело триггера начинается с ключевого слова AS, за которым располагается блок операторов. Шаблон тела:

AS

BEGIN

[объявление переменных]

список операторов

END;

Переменные объявляются следующим образом:

DECLARE VARIABLE имя_переменной тип_данных

Для доступа к значениям столбца используется конструкции формата:

OLD.<имя_столбца>

NEW.<имя_столбца>

Первая позволяет обратиться к старому столцу (до внесения изменения), а вторая к новому значению столбца (после внесения изменения).

Лекция №7 16.03.12

Тема: продолжение

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

  1. При создании таблицы задать ключевой столбец целочисленного типа;

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

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

Пример:

CREATE TABLE Store

( S_Code INTEGER NOT NULL PRIMARY KEY);

CREATE GENERATOR GenStore;

SET GENERATOR GenStore TO 1;

CREATE TRIGGER TRStore FOR Store ACTIVE BEFORE INSERT

AS

BEGIN

NEW.S_Code = GEN_ID(GenStore,1);

END

Тема: Средства для работы с базами данных

Система C++ Builder не имеет своего формата таблиц БД, тем не менее она обеспечивает мощную поддержку большого количества различных СУБД. Средства C++ Builder, предназначенные для работы с БД, можно разделить на два вида:

  1. Инструменты;

  2. Компоненты.

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