Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
101
Добавлен:
15.06.2014
Размер:
1.7 Mб
Скачать

3.7.14 Триггеры, ограничения, правила и хранимые процедуры

3.7.14.1 Определения

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

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

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

Правило(rule) представляет выражение, вычисляемое при добавлении или обновлении записи в таблице. Правила сохранены MicroSoft для совместимости с ранними версиями программных систем этой фирмы.

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

Хранимые процедуры– это программы, которые сохраняются в БД наряду с собственно данными. Необходимость в хранимых процедурах связана с часто используемыми действиями, например, формированием резервной копии таблицы, собиранием статистической информации или выполнением табличных расчетов. Такая возможность современных БД позволяет повысить скорость работы системы за счет снижения объемов передаваемых данных. В SQL SERVER имеется большое количество системных хранимы процедур, имена которых начинаются с sp_. Хранимые процедуры в SQL Server пишут на языкеT-SQL. Вызвать хранимую процедуру можно с любого удаленного сетевого компьютера, используя для этого требуемый синтаксис вызова.

3.7.14.2 Создание триггеров

В системе FoxPro создание триггера выполняется таким образом (пример):

CREATE TRIGGER ON Склад FOR INSERT AS Price<100

Этот триггер не именован и задает условие проверки на вставляемую запись в виде Price<100. В качестве условия можно записывать более сложные функции.

В MS SQL Server синтаксис команды создания триггера более широкий:

CREATE TRIGGER mytrig ON Склад FOR INSERT

AS

IFPrice<0

print “Нельзя вводить отрицательную цену”

Return

В этом примере создается триггер с именем mytrig, который реагирует на ввод новой записи в случае Price<0 выдачей сообщения. Вместо ключевых слов For Insert можно указывать For Update или For Delete. Вариант For Update соответствует обновлению текущей записи, а For Delete – удалению текущей записи.

Для возврата значения из триггера следует использовать команды print или RaiseError:

CREATE TRIGGER mytrig ON Склад FOR Update

AS

IFPrice<0

RaiseError(‘Нельзя вводить отрицательную цену’,1,10)

Return