Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Практическая работа. Создание генераторов






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

92. Вызовите IBConsole, зарегистрируйтесь на сервере и зарегистрируйте БД IB_BIBL_ХХ (меню Database – Register…).

93. Выполните запрос в режиме Interactive SQL:

CREATE GENERATOR GEN_NAKLS

94. К сожалению, в операторе SET GENERATOR начальное значение не может быть результатом запроса SELECT. Поэтому сначала с помощью следующего оператора получите (и запомните) очередное значение, которое нужно поместить в столбец NaklID таблицы NAKLS:

SELECT MAX(NaklID)+1 FROM Nakls

95. Далее установите начальное значение генератора:

SET GENERATOR Gen_Nakls TO число

Здесь число — значение, полученное предыдущим оператором SELECT.

96. Создайте таким же образом генераторы GEN_BOOKS, GEN_FIRMS, GEN_ PAYMENTS и GEN_MOVEOOK для соответствующих таблиц.

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

97. С помощью триггеров можно установить в автоинкрементное поле значение, полученное от генератора. Создайте такой триггер:

CREATE TRIGGER BEF_INS_NAKLS FOR Nakls

ACTIVE BEFORE INSERT

AS

BEGIN

NEW.NaklID = GEN_ID(GEN_NAKLS, 1);

END

В первой строке помимо имени триггера BEF_INS_NAKLS (хотя триггеры нельзя вызвать обращением к ним по имени в хранимых процедурах или SQL-запросах, они, как и все другие сущности серверной БД, должны иметь уникальные имена) указывается также таблица Nakls, для которой он предназначен. Следующая строка указывает, когда триггер должен активизироваться (в нашем случае — перед вставкой новой записи). Третья строка содержит зарезервированное слово AS, которым открывается тело триггера. Тело триггера всегда (даже если триггер содержит един­ственный оператор, как в нашем случае) должно ограничиваться парой ключевых слов BEGIN и END. В пятой строке расположен единственный исполняемый оператор, в котором новому значению (предикат NEW) поля NaklID присваивается значение, полученное от встроенной функции GEN_ID. Двумя параметрами обращения к этой функции указывается имя генератора и то значение, на которое должно увеличиться текущее значение генератора («шаг» генератора). В триггерах INSERT и UPDATE можно обращаться к новому значению поля, если его имени предшествует предикат NEW, а в триггерах DELETE и UPDATE — к старому значению (предикат OLD).

ВНИМАНИЕ Инициировать автоинкрементные поля с помощью генераторов можно только в триггерах, срабатывающих перед вставкой новой записи.

98. Аналогичным образом создайте триггеры BEF_INS_FIRMS, BEF_INS_MOVEB BEF_INS_BOOKS, BEF_INS_PAYMENTS для остальных автоинкрементных полей.

99. Создайте триггер, который перед удалением данных о накладной удаляет данные обо всех связанных с ней книгах:






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.