42328

Триггеры, генераторы, исключения

Лабораторная работа

Информатика, кибернетика и программирование

Студент получает индивидуальный вариант исходных данных с кратким описанием предметной области, который используется при выполнении всех лабораторных работ. При этом каждая очередная лабораторная работа является продолжением выполненной ранее и поэтому они должны обязательно выполняться последовательно. Варианты заданий к лабораторной работе №5 № варианта Имя пользователя Имя файла БД Имя таблицы Бизнес-правило для поля 1 TEM001 SLRY.FDB Цех Дата_поступления 2 TEM002 STUFF.FDB Собрано День_недели 3 TEM003 STUFFPLUS.FDB Изделия Наименование 4 TEM004 TELEPHONE.

Русский

2013-10-29

133 KB

40 чел.

4     

  1.  Лабораторная работа №5. Триггеры, генераторы, исключения
    1.  Цель работы

Изучить используемые в Firebird триггеры, генераторы и исключения. Получить навыки работы с триггерами, генераторами и исключениями с помощью команд SQL и с помощью программы "IBExpert".

Время выполнения: 4 часа.

  1.   Исходные данные

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

  1.  Используемые программы

Все операции выполняются с помощью приложения "IBExpert". Отчет создается в редакторе "OpenOffice.pro".

  1.  Теоретические сведения
    1.  Генераторы (Generators)

Генераторы используются для генерации уникальных номеров, используемых в ключевых полях (автоинкрементных полях). То есть они реализуют те же функциональные возможности в таблицах Firebird, что и поля с автоматическим приращением в других СУБД. Можно указать, чтобы числа генерировались, начиная с заданного начального значения.

Пример создания генератора:

CREATE GENERATOR MyGenerator;

SET GENERATOR MyGenerator TO 1000;

Генераторы непосредственно не привязываются к какому-либо полю. Они просто позволяют генерировать уникальные числа. Для этого используется функция Gen_ID(), встроенная в Firebird, которая генерирует целочисленные значения. Она берет генератор в качестве первого параметра и значение шага в качестве второго. Обычно приращение равно 1.

Обращаться к генератору можно только через функцию Gen_ID().


  1.  Бизнес-правила

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

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

Такие правила называются бизнес-правилами. В первом стандарте SQL считалось, что эти правила выходят за рамки ответственности СУБД и за их реализацию отвечает прикладная программа, осуществляющая доступ к базе данных. Впервые в 1986 году в СУБД Sybase было введено понятие триггер, что позволило включить реализацию бизнес-правил в базу данных.

  1.  Триггеры (Triggers)

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

В СУБД Firebird можно создавать триггеры, работающие при следующих шести условиях:

  •  до вставки записи (BEFORE INSERT);
  •  после вставки записи (AFTER INSERT);
  •  до удаления записи (BEFORE DELETE);
  •  после удаления записи (AFTER DELETE);
  •  до модификации записи (BEFORE UPDATE);
  •  после модификации записи (AFTER UPDATE).


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

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

Синтаксис оператора создания триггера:

CREATE TRIGGER Имя FOR Таблица

  [ACTIVE | INACTIVE]

  {BEFORE | AFTER}

  <операция> [OR <операция> [OR <операция>]]

  [POSITION Номер]

AS [<список переменных>] <блок>;

   <операция> = {INSERT | UPDATE | DELETE}

  <список переменных> =

   DECLARE [VARIABLE] Переменная <тип данных>;

   [DECLARE [VARIABLE] Переменная <тип данных>; ...]

<блок> =

  BEGIN

  <составной оператор>

  [<составной оператор>...]

 END

<составной оператор> = <блок> | Оператор;

Параметры, входящие в этот оператор, пояснены в табл. 1.

Таблица  Параметры оператора создания триггера

Параметр

Описание

Имя

Уникальное название триггера.

Таблица

Название таблицы или просмотра, для которых создается триггер

ACTIVE | INACTIVE

Указывает будет ли работать триггер

BEFORE | AFTER

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

INSERT | UPDATE | DELETE

Одно из событий, на которые будет срабатывать триггер

POSITION Номер

Определяет порядок срабатывания триггера, когда имеется несколько триггеров, реагирующих на одно и то же событие. Номер – целое число между 0 и 32767

DECLARE [VARIABLE] Переменная <тип данных>

Описание локальной переменной, которую можно будет использовать только в этом триггере


Оператор 

Любой одиночный оператор языка хранимых процедур и триггеров Firebird

Внутри тела триггера доступны две контекстные переменные NEW и OLD, которые позволяют получить доступ к новым и старым значениям полей записи, при изменении которой был вызван триггер.

Пример генератора и триггера для создания автоинкрементного поля:

CREATE GENERATOR EMP_NO_GEN;

CREATE TRIGGER SET_EMP_NO FOR EMPLOYEE

ACTIVE BEFORE INSERT POSITION 0

AS

   BEGIN

  IF (NEW.EMP_NO IS NULL) THEN

     NEW.EMP_NO = GEN_ID(EMP_NO_GEN, 1);

END;

  1.  Исключения (Exceptions) и обработка ошибок 

Исключение – это определенная пользователем ошибка, которая имеет имя и связанный с ним текст сообщения.

Для создания исключения служит оператор:

CREATE EXCEPTION Имя 'Текст сообщения';

Для возбуждения исключения в теле триггера или хранимой процедуры служит оператор:

EXCEPTION Имя;

При возникновении исключения нормальный ход выполнения прерывается и Firebird ищет ближайший обработчик этого исключения в текущем блоке BEGIN … END. Если обработчика исключения в этом блоке нет, то Firebird поднимается на уровень выше (к внешнему блоку BEGIN … END) и ищет обработчик там, и т.д. Если обработчик исключения найден, то выполняется его код и далее управление передается на первый оператор за обработчиком исключения. В случае если было сгенерировано исключение, которое никто не обрабатывает, это исключение передается в клиентское приложение. Чаще всего это приводит к выдаче пользователю сообщения о произошедшей ошибке.

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

WHEN {<ошибка> [, <ошибка> ...] | ANY} DO

  <составной оператор>


<ошибка> = {EXCEPTION Имя | SQLCODE Номер | GDSCODE Код_Ошибки} 

Параметры, входящие в этот оператор, описаны в табл. 2

Таблица

Параметр

Описание

ANY

Позволяет обработать все типы ошибок

EXCEPTION Имя

Обработка исключения, сгенерированного пользователем (оператором EXCEPTION)

SQLCODE Номер 

Обработка ошибки SQL

GDSCODE Код_Ошибки

Обработка ошибки Firebird

  1.  Операторы языка хранимых процедур и триггеров

 В этом разделе приведены некоторые из используемых при написании триггеров и хранимых процедур операторов, которые не были описаны выше.

IF … THEN … ELSE

Для реализации сложных алгоритмов сервер Firebird поддерживает операторы ветвления.

IF (условие) THEN <составной оператор> [ELSE <составной оператор>] 

FOR SELECT … DO

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

FOR <выражение select> DO <составной оператор>

WHILE … DO 

Оператор цикла.

WHILE (условие) DO <составной оператор>

  1.   Порядок выполнения работы

Лабораторную работу следует выполнять в следующем порядке:

  1.  Создать аналогично предыдущим лабораторным работам рабочую папку и назвать ее "ЛР5".
  2.  Открыть окно "Редактор скриптов" в приложении "IBExpert".
  3.  Используя кнопку   [Загрузить из файла] на панели инструментов, открыть диалоговое окно "Open SQL File" и с его помощью открыть файл сценария,  созданный при выполнении лабораторной работы №4.


  1.  Используя кнопку [Save as] на панели инструментов, сохранить загруженный сценарий в папке "sqledu02:\D:\Data\ЛР5".  
  2.  Изменить в сценарии путь до файла с базой данных, чтобы база данных создавалась в папке "ЛР5".  
  3.  Добавить в сценарий операторы создания генераторов, исключений и триггеров.
  4.  Создать для всех таблиц базы данных генераторы и триггеры для автоинкрементных полей (для первичных ключей).
  5.  Создать триггеры, реализующие ссылочную целостность, изменив одно из ограничений внешнего ключа. Команды создания этого внешнего ключа из сценария не удалять, а добавить команду удаления этого ограничения перед созданием триггеров. Триггеры должны обеспечивать каскадное обновление и удаление зависимых данных, а также запрет ссылки на отсутствующую запись.
  6.  Создать триггер, реализующий бизнес-правило в соответствии с выданным индивидуальным заданием. Для триггера должны присутствовать комментарии, поясняющие выполняемые операции.
  7.  Выполнить сценарий и сохранить его в папке "ЛР5".
  8.  Зарегистрировать созданную базу данных в программе "IBExpert" и подключиться к ней.
  9.  Создать в своей базе данных таблицу в диалоговом режиме. Она должна называться "TestTriggers" и содержать десять полей разных типов с произвольными именами. При создании автоинкрементного поля первичного ключа сразу указать необходимость создания для него генератора и триггера. Добавить в диалоговом режиме к этой таблице три триггера выполняющих произвольные действия. Скопировать в отчет сценарий создания этой таблицы и триггеров, который сгенерирует "IBExpert".
  10.  Создать в папке "ЛР5" резервную копию базы данных.
  11.  Создать и сохранить в папке "ЛР5" файл с отчетом о выполнении лабораторной работы, который должен называться "Отчет5-xx.odt", где xx — это номер варианта задания.   .
    1.  Варианты заданий

Вариант задания (Таблица 3) выбирается по формуле (N mod 24)+1, где N – последние две цифры зачетной книжки студента.

Таблица : Варианты заданий к лабораторной работе №5

№ варианта

Имя пользователя

Имя файла БД

Имя таблицы

Бизнес-правило для поля

1

TEAM001

SALARY.FDB

Цех

Дата_поступления


2

TEAM002

STUFF.FDB

Собрано

День_недели

3

TEAM003

STUFFPLUS.FDB

Изделия

Наименование

4

TEAM004

TELEPHONE.FDB

Абонент

Абонплата

5

TEAM005

TOOLS.FDB

Поставляет

Дата_изготовления

6

TEAM006

EXAMIN.FDB

Студент

Семейное_положение

7

TEAM007

LIBRARY.FDB

Книга

Дата_поступления

8

TEAM008

AVIA.FDB

Рейс

День_недели

9

TEAM009

SHOP.FDB

Ассортимент

Размер

10

TEAM010

HCOMMAND.FDB

Команда

Название

11

TEAM011

STUDENT.FDB

Студент

Общежитие

12

TEAM012

SERVIS.FDB

Квалификация

Оплата

13

TEAM013

REGION.FDB

Регион

Численность

14

TEAM014

OPTSHOP.FDB

Товар

Дата_поступления

15

TEAM015

OPTLEKI.FDB

Лекарства

Дата_изготовления

16

TEAM016

SPORTSMEN.FDB

Спортсмен

Вид_спорта

17

TEAM017

DANCING.FDB

Танцор

Возрастная_группа

18

TEAM018

BIRTHDOM.FDB

Мать

Дата_выписки

19

TEAM019

TENNIS.FDB

Спортсмен

Возраст

20

TEAM020

CURSES.FDB

Расценки

Стоимость

21

TEAM021

TEACHER.FDB

Преподаватель

Зарплата

22

TEAM022

HOSPITAL.FDB

Больной

Выписан

23

TEAM023

SOLDAT.FDB

Призывник

Дата_медкомиссии

24

TEAM024

YUSHOP.FDB

Изготовитель

Стаж

  1.      Ход работы 

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

Для создания триггеров с помощью программы "IBExpert" в диалоговом режиме необходимо выполнить следующие действия:

  1.  Подключиться к базе данных.
  2.  Открыть окно с таблицей, для которой будет создаваться триггер.
  3.  Перейти на вкладку "Триггеры" (Рис. 1).
  4.  Нажать в этом окне правую кнопку мыши на одном из событий, для которого будет создаваться триггер.


  1.  Откроется контекстное меню, в котором надо выбрать команду "Новый триггер".

  1.  В результате откроется окно создания триггера (рис. 2 или 3), в котором достаточно лишь ввести тело триггера, а затем нажать кнопку [Компилировать триггер] (Ctrl+F9).

 

Переключение между двумя режимами просмотра и редактирования триггера, показанными на рис. 2 и 3 производится кнопкой [Включить/Выключить "ленивый" режим].


Создание с помощью программы "IBExpert" в диалоговом режиме генераторов и исключений происходит следующим образом:

  1.  Открывается окно "Генераторы" либо "Исключения". Для этого можно, на-пример, выбрать команду главного меню База данных > Новый генератор или База данных > Новое исключение.
  2.  В окне "Генераторы" или "Исключения" вводятся для генератора – имя и начальное значение, а для исключения – имя и текст сообщения. Можно ввести данные сразу о нескольких генераторах и исключениях.
  3.  После ввода данных необходимо нажать кнопку [Компиляция] (F9), которая приведет к автоматической генерации необходимых операторов и их выполнению.
    1.  Отчет о выполнении работы

Отчет о выполнении лабораторной работы №5 необходимо оформить на листах формата A4. Для создания отчета следует использовать шаблон отчета для соответствующей лабораторной работы, который необходимо открыть с помощью приложения OpenOffice.

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

  1.  Цель работы.
  2.  Краткое описание предметной области в соответствии с вариантом.
  3.  Данные о версии СУБД, использованной в лабораторной работе.
  4.  Перечисление всех использованных при выполнении лабораторной работы команд главного меню приложения "IBExpert" с краткими пояснениями выполняемых действий.
  5.  Перечень файлов, полученных при выполнении лабораторной работы с указанием их имен, места расположения, даты изменения и размеров (сценарий, база данных, резервная копия базы данных, файл с отчетом).


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

  1.  Контрольные вопросы
  2.  Что такое бизнес-правила?
  3.  Какие существуют способы реализации бизнес-правил?
  4.  Какие преимущества и недостатки имеет реализация бизнес-правил на сервере и в клиенте?
  5.  Что называется триггером? При каких событиях работают триггеры в Firebird? Для чего используются переменные NEW и OLD?
  6.  Как в триггере запретить выполнение операции?
  7.  Какие преимущества и недостатки имеют триггеры?
  8.  Что такое генератор? Как получить значение генератора?
  9.  Для чего используется функция GEN_ID?
  10.  Что такое исключение?
  11.  Как происходит процесс обработки исключений?
  12.  Какие ошибки могут быть кроме исключений, созданных пользователем?

*


Хранимые процедуры изучаются в другой лабораторной работе.

    ?


 

А также другие работы, которые могут Вас заинтересовать

35084. Управление человеческими ресурсами. Конспект лекций 143.75 KB
  Структура персонала организации определяется по категориям руководители специалисты служащие рабочие. Все категории персонала разделяются по профессиям специальностям квалификационным признакам и характеризуются специфическим местом в системе управления особенностями профессиональной подготовки. Разработка и проведение кадровой политики Оплата и стимулирование труда Групповое управление взаимоотношение в коллективе и с профсоюзами Социально психологические аспекты управления Принципы подбора и расстановки персонала Формы оплаты...
35085. Управлінське документування: Кредитно – модульний курс 292.5 KB
  Важливим завданням є створення і функціонування системи документів як робочого інструменту будьякої сфери. Зараз перед державою та суспільством постало багато нових завдань і значно зріс обсяг інформації стали жорстокішими вимоги до якості документів термінів їх виконання та доведення до виконавців.1 Призначення та класифікація документів Документ це засіб закріплення різними способами на відповідному матеріалі інформації про факти події явища обєктивної дійсності та розумову діяльність людини. Під час...
35086. Понятие и юридическая структура административного правонарушения в области таможенного дела 180 KB
  Законодательство различает посягательства в сфере таможенного дела в зависимости от различных степеней тяжести на преступления и проступки. Под административными правонарушениями в области таможенного деланарушениями таможенных правил понимаются именно проступки.1 КоАП России административным правонарушением признается противоправное виновное действие бездействие физического или юридического лица за которое КоАП России и законами субъектов РФ к административным правонарушениям в сфере таможенного дела не применимо установлена...
35087. ВАЛЕОЛОГИЯ. Учебник для вузов 2.92 MB
  Так в части требований к уровню подготовленности выпускника педагогического вуза определены следующие условия: владение системой знаний о взаимосвязях физического психического и социального здоровья человека и общества; обладание организационнодеятельностными умениями необходимыми для самоанализа развития своих творческих способностей и повышения квалификации; осознание здоровья как ценности владение знаниями и умениями по охране здоровья и безопасности жизнедеятельности; представление о взаимодействии организма и среды месте...
35088. Формирование лихорадочных реакций в фило- и онтогенезе 74.33 KB
  Интеграция температурных сигналов и температуры самого гипоталамуса формирует эффекторные импульсы проходящие преимущественно по симпатическим нервам и определяющие состояние обмена веществ интенсивность периферического кровообращения дрожь одышку. Особое место в биохимии опухолей занимает изучение обмена углеводов и выработки энергии. Нарушение регуляции обмена веществ основного обмена ТИПИЧЕСКИЕ НАРУШЕНИЯ ОБМЕНА ВЕЩЕСТВ. НАРУШЕНИЯ РЕГУЛЯЦИИ ОБМЕНА ВЕЩЕСТВ Обмен веществ или метаболизм в организме определяется наследственными...
35089. Інформаційне забезпечення юридичної діяльності 3.25 MB
  Вступ В розділах посібника користувачі зможуть отримати поглибленні знання: зі створення інформаційних систем ділового та юридичного призначення у середовищі СУБД MS Access зі створювання електронних шаблонів з полями форм для юридичних та інших документів зі створення серійних документів на основі злиття табличних даних та зразка основного документа зі створювання та використовування макросів для автоматизації підготовки документів у MS Word та MS Excel. До виконання завдань необхідно обов'язково ознайомитися з теоретичними основами баз...
35090. Виды кишечных швов 21.68 KB
  В основе большинства операций на желудочно-кишечном тракте лежит кишечный шов. Под термином кишечный шов подразумевают все виды швов накладываемых на стенку полого органа желудочно-кишечного тракта пищевод желудок кишечник а также и на другие полые органы имеющие брюшинный покров мышечную оболочку подслизистый слой и слизистую оболочку жёлчный и мочевой пузырь. Главные требования к кишечному шву: кишечный шов должен быть прочным т. после наложения шва...
35091. ПРОЕКТ СОЗДАНИЯ МОЛОДЕЖНОГО ТУРА С ВКЛЮЧЕНИЕМ АНИМАЦИОННЫХ ПРОГРАММ В ТУРФИРМЕ «WORLD TRAVEL» 903 KB
  Турфирма World Travel является туроператором организующим преимущественно развлекательные туры за рубеж: в Египет Турцию Болгарию; а также на территории курортных районов России. World Travel обеспечивает высокий уровень обслуживания клиентов благодаря: высокому профессионализму команды; собственным чартерным рейсам; собственному автобусному парку; прямым связям с крупнейшими российскими и зарубежными туристскими фирмами отелями и авиакомпаниями. Турфирма предлагает своим клиентам спектр туристских услуг: отдых экскурсионные...
35092. Расчет главной балки 1.26 MB
  Подбор сечения балки настила. Расчёт главной балки. Компоновка сечения главной балки. Изменение сечения главной балки по длине пролета.