
- •3. Детализация реляционной модели данных
- •3.1. Определение и элементы реляционной модели
- •3.2 Связывание таблиц
- •3.2.1 Назначение и основные виды связывания таблиц
- •3.2.2 Межтабличная связь вида 1:1
- •3.2.3 Межтабличные связи вида 1:м и вида м:1
- •Межтабличная связь вида м:м
- •3.3 Контроль целостности связей
- •3.4 Теоретические языки запросов
- •3.5 Основы реляционной алгебры
- •3.5.1 Общая характеристика реляционной алгебры
- •3.5.2 Базовые теоретико-множественные операции реляционной алгебры Кодда
- •3.5.3 Специальные реляционные операции реляционной алгебры Кодда
- •3.5.4 Дополнительные операции реляционной алгебры
- •3.5.5Основные правила записи выраженийреляционной алгебры
- •3.6. Основы реляционного исчисления
- •3.6.1 Сущность реляционного исчисления и его соотношение с реляционной алгеброй
- •3.6.2 Реляционное исчисление, основанное на кортежах
- •3.6.3 Реляционное исчисление, основанное на доменах
- •3.7 Структурированный язык запросовSql
- •3.7.1 Общая характеристика и основные операторы языкаSql
- •3.7.2 Оператор создания таблицы
- •3.7.3 Оператор изменения структуры таблиц
- •3.7.4 Оператор удаления таблицы
- •3.7.5 Оператор создания индекса
- •3.7.6 Оператор удаления индекса
- •3.7.7Оператор создания представления
- •3.7.8 Оператор удаления представления
- •3.7.9 Оператор выборки записей
- •3.7.10 Оператор изменения записей
- •3.7.11 Оператор вставки новых записей
- •3.7.12 Оператор удаления записей
- •3.7.13 Некоторые важные функции sql
- •3.7.14 Триггеры, ограничения, правила и хранимые процедуры
- •3.7.14.1 Определения
- •3.7.14.2 Создание триггеров
- •3.7.14.3 Создание хранимых процедур
- •3.7.14.4 Создание правил и ограничений
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