Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все лабы по рубд на ibexpert.doc
Скачиваний:
13
Добавлен:
13.08.2019
Размер:
905.22 Кб
Скачать

Лабораторная работа №6 Создание генераторов и триггеров. Каскадные воздействия.

Цель работы: научиться создавать, ставить на выполнение, редактировать и удалять триггеры и генераторы.

Триггер — это процедура, автоматически исполняемая SQL-сервером при наступлении события "обновление", "удаление" или "добавление" новой записи таблицы.

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

  • выполняемые до или после наступления события;

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

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

  • Создание триггеров

Триггер создается командой Database->New trigger, после чего появится следующее окно:

В поле Name указывается название триггера, в For Table — для какой таблицы создается триггер, Position – указывает порядок триггера( триггер с наименьшим номером выполняется раньше), Type – время срабатывания триггера (before(до)/after(после)insert(вставка)/update(обновление)/delete(удаление)).

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

  1. Database->New trigger и заполните форму, как на рисунке выше.

  2. Для проведения транзакции по созданию триггера выполнить. Для того, чтобы триггер работал без ошибок, следует удалить внешний ключ в таблице Lease. Примечание: если при удалении внешнего ключа возникает ошибка типа «Невозможно удалить, т.к. INDEX такой-то используется», то попробуйте вырубить Delphi, если он запущен, и в IBExpert переконнектиться с контейнером.

  • Создание генераторов

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

Генератор создается командой Database->New generator. В появившемся окне нужно задать имя генератора(Name) и начальное значение(Value). Далее для его использования следует создать триггер.

Создание генератора для таблицы Owner:

  1. в созданном ранее триггере указываем таблицу Owner;

  2. выберите тип(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…) или же открыть окно редактирования процедуры и запустить ее там, нажав на кнопку со стрелкой вправо.