Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР методичка прог в КС / метод_лаб_программирование_КС_071900_2010.doc
Скачиваний:
42
Добавлен:
10.06.2015
Размер:
337.41 Кб
Скачать

Задания к лабораторной работе № 7

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

  2. Самостоятельно сформулировать задачу, решаемую с помощью механизма хранимых процедур. Разработать соответствующую процедуру.

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

  1. Дайте определение хранимой процедуры.

  2. Порядок действий при разработке хранимой процедуры.

Лабораторная работа № 9 Триггеры в sql Server

Цель работы: познакомить студентов с основными понятиями проверки целостности данных в SQL – Server: триггер, вставленная таблица, удаленная таблица, журнал транзакций, изучить основные типы триггеров (вставки, удаления).

Триггеры (trigger) являются особой разновидностью хранимых процедур, выполняемых автоматически (срабатывающих) при модификации данных таблицы. Триггеры находят разное применение — от проверки данных до обеспечения сложных деловых правил. Особенно полезным свойством триггеров является то, что они имеют доступ к образам записи до и после модификации; таким образом, можно сравнить две записи и принять соответствующее решение.

При создании триггеров следует обращать внимание на следующие моменты.

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

2. При создании первичных ключей в свойствах ключа нужно убрать галочки "Enable relationship for INSERT and UPDATE" и " Enable relationship for replication".

3. Добавление, удаление и модификацию данных рекомендуется производить в Query Analyzer при включенном режиме Hide Result Pane для просмотра итоговых сообщений

Использование триггеров

Триггеры используются для различных целей. В том числе:

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

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

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

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

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

Срабатывание триггеров

Триггеры закрепляются за таблицей и срабатывают в ответ на определенные команды DМL (Data Modification Language, поднабор команд, Тгаnsact-SQL). Иначе говоря, выполнение команды, модифицирующей запись, всегда приводит к срабатыванию триггера. Поскольку триггер является частью исходной транзакции, он может вызвать от­кат отдельной команды или всей транзакции. Благодаря этому у вас появляется возможность контролировать модификацию таблиц с по­мощью логики, связанной с таблицей.

Чтобы пояснить сказанное, рассмотрим пример — удаление записей из таблицы publishers командой DELЕТЕ.

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

Сначала происходит проверка всех ограни­чений. Если ограничение не нарушено (или не существует), запись удаляется. Затем перед завершением транзакции выполняется триггер, который принимает решение об откате или закреплении транзакций.