русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задача. Триггер контроля.


Дата добавления: 2015-08-31; просмотров: 699; Нарушение авторских прав


Дана таблица курсов валют. Необходимо написать триггер, который с помощью raise_application_error выдает информационные ошибки при некорректных изменениях (insert, update, delete) в таблице курсов, которые осуществляет пользователь из интерфейса:

- при вставке нулевого или отрицательного курса

- при отсутствии в записи одного из полей (даты, валюты, курса)

- при удалении записи о курсе

 

Создадим таблицу курсов:

CREATE TABLE KK_RATE

(

RATE_DATE DATE,

CURRENCY_CODE INTEGER,

RATE NUMBER(6,2)

);

 

Создадим триггер контроля:

create or replace trigger trig_biud_rate

before insert or update or delete on kk_rate

for each row

begin

if inserting or updating then

-- запрет неположительных курсов

if :new.rate <= 0 then

raise_application_error(-20001,

'Курс должен быть строго положительным');

end if;

-- запрет null-значений

if :new.rate_date is null or :new.currency_code is null or

:new.rate is null then

raise_application_error(-20002, 'Заполните все поля');

end if;

elsif deleting then

-- запрет удаления

raise_application_error(-20003,

'Нельзя удалять курсы');

end if;

end trig_biud_rate;

 

Диапазон пользовательских кодов ошибок, генерируемых с помощью raise_application_error: от -20000 до -20999.

 

Проверим работу триггера, будем выполнять команды по одной:

insert into kk_rate(rate_date, currency_code, rate) values(to_date('21.06.2012','dd.mm.yyyy'), 840, 32.91);

insert into kk_rate(rate_date, currency_code, rate) values(to_date('22.06.2012','dd.mm.yyyy'), 840, 32.91);

insert into kk_rate(rate_date, currency_code, rate) values(to_date('23.06.2012','dd.mm.yyyy'), 978, -41.72);

update kk_rate set rate = 0 where rate_date = to_date('22.06.2012','dd.mm.yyyy') and currency_code = 840;



insert into kk_rate(rate_date, currency_code, rate) values(to_date('23.06.2012','dd.mm.yyyy'), 978, null);

insert into kk_rate(rate_date, currency_code, rate) values(null, 978, 76.92);

delete from kk_rate where rate_date = to_date('22.06.2012','dd.mm.yyyy') and currency_code = 840;

delete from kk_rate;

 

Также можно самостоятельно разобрать статью о мутациях:

http://www.sql.ru/faq/faq_topic.aspx?fid=513



<== предыдущая лекция | следующая лекция ==>
Задача. Триггер по поиску в справочнике. | Global temporary tables.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.57 сек.