Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД - Хранимые процедуры и триггеры.docx
Скачиваний:
1
Добавлен:
27.08.2019
Размер:
102.35 Кб
Скачать
    1. Использование триггеров и хранимых процедур

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

      1. Использование триггеров при определении ссылочной целостности

В простых случаях Visual FoxPro может самостоятельно создать триггер. Для этого необходимо воспользоваться опцией Edit Referential Integrity определения связи в окне конструктора БД.

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

Для указания построителю, какое поле считать ключевым, а какое внешним ключом, необходимо установить, необходимо установить между двумя таблицами «постоянную связь». Затем необходимо выбрать один из трех возможных типов отношений между этими таблицами (табл.2).

Таблица 2

Формирование правил для различных типов отношений

Триггер

Тип отношения

Правило

UPDATE

Cascade

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

Restrict

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

Ignore

Не настраивать никаких отношений между таблицами. Модификация в одной таблице никак не влияет на модификацию в другой

DELETE

Cascade

При удалении записи в родительской таблице удалить все соответствующие записи подчиненной таблицы

Restrict

Запретить удаление записи в родительской таблице, если существует хотя бы одна соответствующая ей неудаленная запись в подчиненной таблице

Ignore

Не настраивать никаких отношений между таблицами. Модификация в одной таблице никак не влияет на модификацию в другой

INSERT

Cascade

Не существует

Restrict

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

Ignore

Не настраивать никаких отношений между таблицами. Модификация в одной таблице никак не влияет на модификацию в другой

Эти правила относятся исключительно к содержимому ключевого поля родительской таблицы и внешнего ключа дочерней.

После выбора типа взаимоотношений между таблицами происходит следующее:

  • в хранимых процедурах базы данных создаются функции, обеспечивающие указанный тип взаимоотношений вводимых данных;

  • в свойствах таблиц добавляются в выражения триггеров вызов соответствующих функций (см. рис.3).

Контрольные вопросы:

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

  2. В каких случаях срабатывают триггеры, созданные с помощью Referential Integrity Builder?

Практическое задание:

Для двух связанных таблиц БД (согласно индивидуальному заданию) определить различные правила для контроля ссылочной целостности с использованием триггеров UPDATE, DELETE и INSERT. Выполнить действия по вставке, модификации и удалению записей, отслеживая срабатывание триггеров при корректных и некорректных действиях с записями таблицы.