- •Лабораторная работа №1. Операции с базой данных
 - •Ход работы
 - •Создание базы данных
 - •Регистрация базы данных
 - •Подключение к базе данных
 - •Удаление базы данных
 - •Извлечение метаданных
 - •Резервное копирование и восстановление
 - •Отчет о выполнении работы
 - •Лабораторная работа №2. Домены
 - •Домены (Domains)
 - •Задание
 - •Ход работы
 - •Отчет о выполнении работы
 - •Лабораторная работа №4. Ограничения
 - •Ограничение первичного ключа (Primarykey)
 - •Ограничения уникальности (Unique)
 - •Ограничения внешнего ключа (Foreignkeys)
 - •Ограничения атрибутов (Checks)
 - •Задание
 - •Ход работы
 - •Отчет о выполнении работы
 - •Лабораторная работа №5. Триггеры, генераторы, исключения
 - •Бизнес-правила
 - •Триггеры (Triggers)
 - •Исключения (Exceptions) и обработка ошибок
 - •Операторы языка хранимых процедур и триггеров
 - •If … then … else
 - •Задание
 - •Ход работы
 - •Отчет о выполнении работы
 - •Организация доступа к данным
 - •TibDatabase
 - •Подсоединение к бд
 - •TibTransaction
 - •Датасеты
 - •IbDataSet
 - •Буферизация записей
 - •Обновление данных
 - •Перебор записей
 - •Master-Detail
 - •Locate (поиск)
 - •Работа с blob
 - •Jpeg в Blob
 - •Blob и dbGrid
 - •IbTable
 - •Почему компонент ibTable не рекомендуют?
 - •IbQuery
 - •Параметризированные запросы
 - •Фильтрация
 - •IbTable
 - •IbDataSet, ibQuery
 - •OnFilterRecord
 - •IbUpdateSql
 - •IbUpdateSqlw
 - •IbStoredProc
 - •EibError
 - •IbDatabaseInfo
 - •IbsqlMonitor
 - •IbEvents
 - •IbExtract
 - •IbConnectionBroker
 - •IbScript
 - •IbsqlParser
 - •IbDatabaseIni
 
Исключения (Exceptions) и обработка ошибок
Исключение – это определенная пользователем ошибка, которая имеет имя и связанный с ним текст сообщения.
Для создания исключения служит оператор:
CREATE EXCEPTION Имя 'Текст сообщения';
Для возбуждения исключения в теле триггера или хранимой процедуры служит оператор:
EXCEPTION Имя;
При возникновении исключения нормальный ход выполнения прерывается и Firebird ищет ближайший обработчик этого исключения в текущем блоке BEGIN … END. Если обработчика исключения в этом блоке нет, то Firebird поднимается на уровень выше (к внешнему блоку BEGIN … END) и ищет обработчик там, и т.д. Если обработчик исключения найден, то выполняется его код и далее управление передается на первый оператор за обработчиком исключения. В случае если было сгенерировано исключение, которое никто не обрабатывает, это исключение передается в клиентское приложение. Чаще всего это приводит к выдаче пользователю сообщения о произошедшей ошибке.
Синтаксис оператора для обработки исключений внутри тела триггера или хранимой процедуры имеет следующий вид:
WHEN {<ошибка> [, <ошибка> ...] | ANY} DO
<составной оператор>
<ошибка> = {EXCEPTION Имя | SQLCODE Номер | GDSCODE Код_Ошибки}
Параметры, входящие в этот оператор, описаны в табл. 2
Таблица 2
| 
				 Параметр  | 
				 Описание  | 
|---|---|
| 
				 ANY  | 
				 Позволяет обработать все типы ошибок  | 
| 
				 EXCEPTION Имя  | 
				 Обработка исключения, сгенерированного пользователем (оператором EXCEPTION)  | 
| 
				 SQLCODE Номер  | 
				 Обработка ошибки SQL  | 
| 
				 GDSCODE Код_Ошибки  | 
				 Обработка ошибки Firebird  | 
Операторы языка хранимых процедур и триггеров
В этом разделе приведены некоторые из используемых при написании триггеров и хранимых процедур операторов, которые не были описаны выше.
If … then … else
Для реализации сложных алгоритмов сервер InterBase поддерживает операторы ветвления.
IF (условие)
THEN <составной оператор>
[ELSE <составной оператор>]
FOR SELECT … DO
Представляет собой оператор выборки данных и обработки их в цикле по записям.
FOR <выражение select>
DO <составной оператор>
WHILE … DO
Оператор цикла.
WHILE (условие)
DO <составной оператор>
Задание
Лабораторную работу следует выполнять в следующем порядке:
Создать аналогично предыдущим лабораторным работам рабочую папку и назвать ее "ЛР5".
Скопировать в эту папку файл сценария, созданный при выполнении лабораторной работы №4.
Открыть в приложении "IBExpert" этот сценарий.
Исправить текст комментариев и сделать, чтобы база данных теперь создавалась в папке "ЛР5".
Добавить в сценарий операторы создания генераторов, исключений и триггеров. Для каждого суррогатного первичного ключа должен быть создан соответствующий генератор и триггер.
Создать триггеры, реализующие ссылочную целостность, заменив одно ограничение внешнего ключа. Команды создания этого внешнего ключа из сценария не удалять, а добавить команду удаления этого ограничения перед созданием триггеров. Также добавить оператор создания индекса по полю бывшего внешнего ключа. Триггеры должны обеспечивать каскадное обновление и удаление зависимых данных, а также запрет ссылки на отсутствующую запись.
Создать не менее пяти триггеров, реализующих бизнес-правила в соответствии с выданным индивидуальным заданием. Для каждого триггера должны присутствовать комментарии, поясняющие выполняемые операции.
Выполнить сценарий и сохранить его в папке "ЛР5".
Зарегистрировать созданную базу данных в программе "IBExpert" и подключиться к ней.
Создать в своей базе данных таблицу в диалоговом режиме. Она должна называться "TestTriggers" и содержать десять полей разных типов с произвольными именами. При создании поля суррогатного первичного ключа сразу указать необходимость создания для него генератора и триггера. Добавить в диалоговом режиме к этой таблице три триггера выполняющих произвольные действия. Скопировать в отчет сценарий создания этой таблицы и триггеров, который сгенерирует "IBExpert".
Создать в папке "ЛР5" резервную копию базы данных.
Создать и сохранить в папке "ЛР5" файл с отчетом о выполнении лабораторной работы, который должен называться "Отчет.doc".
