Студопедия

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

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

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






Создание индексов, триггеров и хранимых процедур.






Индексы создаются для ускорения доступа к данным. Если мы в дереве объектов БД выберем Indexes, то увидим, что создание ключей привело к появлению в БД ряда индексов:

Рис.26 Ветвь Indexes содержит перечень всех индексов

Для ускорения доступа к данным в запросах о накладных, выданных за определенную дату, создадим для таблицы индекс по полю (по убыванию):

CREATE DESC INDEX NACL_PO_DATE ON NAKL(NAKL_DATE)

Добавим в таблицу TOVAR поле TOV_KVO, в котором будет храниться количество товара на складе, а в таблицу POKUP – поле POK_SUMM, в котором будет храниться сумма денег, авансированных покупателем для закупки товара:

ALTER TABLE TOVAR

ADD TOV_KVO INTEGER DEFAULT 0 CHECK(TOV_KVO > -1)

ALTER TABLE TOVAR

ALTER TOV_KVO POSITION 3

ALTER TABLE POKUP

ADD POK_SUMM DOUBLE PRECISION DEFAULT 0.0 CHECK(POK_SUMM > -25.0)

ALTER TABLE POKUP

ALTER POK_SUMM POSITION 4

 

Заполним поля данными, приведенными ниже:

Рис.27 Заполнение данными таблицы TOVAR

Рис.28 Заполнение данными таблицы POKUP

 

Реализация бизнес-правил на сервере средствами триггеров и хранимых процедур.

Последовательность выписки накладной на продажу товаров следующая:

1. Проверить сколько есть в наличии данного товара в таблице “TOVAR”. Если эта величина больше чем количество, продаваемое по накладной, то уменьшить количество товара в таблице “ TOVAR ” на то количество товара, которое записывается в таблицу OTPUSK. Если товара для продажи не хватает, то генерировать исключительную ситуацию «NO_TOVAR_QUANT».

CREATE EXCEPTION NO_TOVAR_QUANT 'Malo tovara.';

2. Определить Сумму на счету покупателя, Итоговую сумму в накладной, по которой продается товар и стоимость продаваемого товара.

Если (Сумма на счету покупателя - Итоговая сумма в накладной - стоимость продаваемого товара > 10.0) то:

{ Записать новую Итоговую сумму в накладную;

Уменьшить Сумму на счету покупателя на соответствующую величину }

иначе

{. Если Денег на счету покупателя не хватает, то товар в накладную не включать.

Генерировать исключительною ситуацию «OTPUSK_CHN_NAKL_ID». };

CREATE EXCEPTION OTPUSK_CHN_NAKL_ID 'Nakl_ID must be unchanged.';

Для осуществления создадим следующие процедуры и триггера:

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

SET TERM!!;






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