- •Содержание
- •Лабораторная №1 Проектирование структуры базы данных. Нормализация таблиц.
- •Лабораторная №2 Создание серверной части приложения: алиас, файл базы данных, таблицы.
- •Лабораторная работа №3 Визуальное проектирование структуры базы данных.
- •Лабораторная работа № 4 Отображение данных на клиенте.
- •Лабораторная №5 Добавление/редактирование/удаление данных.
- •Лабораторная работа №6 Создание генераторов и триггеров. Каскадные воздействия.
- •Лабораторная №7 Создание и использование хранимых процедур в ibExpert.
- •Лабораторная №8 Сортировка данных. Поиск. Фильтрация.
- •Лабораторная №9 Работа с транзакциями. Кэширование изменений.
- •Лабораторная №10 Обеспечение достоверности данных, исключительные ситуации.
- •Лабораторная №11 Работа с отчетами.
- •Лабораторная №12 Установление привилегий доступа.
Лабораторная работа №6 Создание генераторов и триггеров. Каскадные воздействия.
Цель работы: научиться создавать, ставить на выполнение, редактировать и удалять триггеры и генераторы.
Триггер — это процедура, автоматически исполняемая SQL-сервером при наступлении события "обновление", "удаление" или "добавление" новой записи таблицы.
По отношению к инициализирующему их событию различают два типа триггеров:
выполняемые до или после наступления события;
автоматически обеспечивающие каскадные воздействия в дочерних таблицах при изменении, удалении записи в родительской таблице.
Нельзя вызывать триггер непосредственно из программы, передавать ему входные параметры и возвращать их значения. Триггеры всегда реализуют действие.
Создание триггеров
Триггер создается командой Database->New trigger, после чего появится следующее окно:
В поле Name указывается название триггера, в For Table — для какой таблицы создается триггер, Position – указывает порядок триггера( триггер с наименьшим номером выполняется раньше), Type – время срабатывания триггера (before(до)/after(после)insert(вставка)/update(обновление)/delete(удаление)).
Создадим триггер для родительской таблицы Realty, который при изменении значения ее первичного ключа будет автоматически изменять значение внешнего ключа дочерней таблицы Lease, другими словами, если в таблице Realty изменилось значение поля Adr, то триггер изменит значение поля Adr в соответствующей записи таблицы Lease.
Database->New trigger и заполните форму, как на рисунке выше.
Для проведения транзакции по созданию триггера выполнить. Для того, чтобы триггер работал без ошибок, следует удалить внешний ключ в таблице Lease. Примечание: если при удалении внешнего ключа возникает ошибка типа «Невозможно удалить, т.к. INDEX такой-то используется», то попробуйте вырубить Delphi, если он запущен, и в IBExpert переконнектиться с контейнером.
Создание генераторов
Генераторы предназначены для обеспечения уникальности значений ключевых столбцов и используются совместно с триггерами.
Генератор создается командой Database->New generator. В появившемся окне нужно задать имя генератора(Name) и начальное значение(Value). Далее для его использования следует создать триггер.
Создание генератора для таблицы Owner:
в созданном ранее триггере указываем таблицу Owner;
выберите тип(Type) триггера 'before insert'(перед вставкой) и впишите между begin/end код new.non = gen_id(GenStore,1); Таким образом, перед каждым добавлением записи в таблицу Owner для поля non будет генерироваться уникальный код в зависимости от текущего значения генератора.
Лабораторная №7 Создание и использование хранимых процедур в ibExpert.
Цель работы: научится создавать, ставить на выполнение, редактировать и удалять хранимую процедуру.
Хранимая процедура — это отдельная программа, написанная на процедурном языке используемого сервера баз данных. Существует две разновидности хранимых процедур: процедуры выбора (аналог SELECT-запросов) и исполняемые процедуры. Процедуры выбора возвращают наборы данных, которые состоят из строк или отдельных значений. Исполняемые процедуры не возвращают данные. Они предназначены для исполнения команд, например, delete.
Создание хранимой процедуры
Процедура создается командой Database->New procedure. В появившемся окне задаются имя процедуры, ее входные/выходные параметры, локальные переменные и собственно сам код процедуры на SQL.
Для сохранения процедуры нажмите на кнопку с молнией. Для запуска процедуры нажмите на кнопку рядом (со значком стрелки вправо).
Пример процедуры добавления записи в таблицу:
Изменение процедуры производится в этом же окне. Удаление процедуры можно произвести из списка в Database Explorer, нажав на нужную правой кнопкой мыши и выбрав команду Drop Procedure…
Запуск процедуры
Запуск процедуры можно выполнить из Database Explorer (правой кнопкой нажать на нужную процедуру и выбрать команду Run Procedure…) или же открыть окно редактирования процедуры и запустить ее там, нажав на кнопку со стрелкой вправо.