Составители:
Рубрика:
ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
70
FROM Tabl;
IF (ABS(StatAvg-StatN*(:new.Atl))>30*StatN) THEN
RAISE_APPLICATION_ERROR(-20002, 'Слишком большое уклонение');
END IF;
END;
/
Trigger created.
Работу механизма триггера проиллюстрируем на примере. При вводе значения, достаточно близкого к среднему (в
данном случае 40), триггер не запускается, и "ничего не происходит". При вводе значения атрибута, равного 90,
соответствующая статистика указывает на большое уклонение, происходит срабатывание триггера, и
новая строка не включается. Операция выборки подтверждает ожидаемое изменение в таблице.
SQL>insert into tabl values(40);
1 row created.
SQL>insert into tabl values (90);
insert into tabl values(90)
ERROR at line 1:
ORA-20002: Слишком большое уклонение
ORA-06512: at "SYSTEM. TRIG_TBI", line 9
ORA-04088: error during execution of trigger ‘SYSTEM .TRIG_TBI'
SQL>SELECT * FROM tabl;
Следующий пример иллюстрирует возможность обработки исключительной ситуации средствами пользовательской
исключительной ситуации, В данном случае создается триггер, который при превышении заданного порога уклонения
вводимохх) значения атрибута выводит диагностическое сообщение. При этом данные в таблицу вводятся.
Пример 2.3.31
SQL>CREATE OR REPLACE TRIGGER TRIG_TB2
BEFORE INSERT ON Tabl
FOR EACH ROW
DECLARE
StatAvg NUMBER;
StatN NUMBER;
Special_case EXCEPTION; —Пользовательская исключительная ситуация
BEGIN
SELECT COUNT(Atl),SUM(Atl) INTO StatN, StatAvg
FROM Tabl;
IF (ABS(StatAvg - StatN*(:new.Atl))>30)
THEN RAISE Special_case;
END IF;
EXCEPTION
WHEN Special_case THEN
DBMS__QUTPUT.PUT_LINE('Слишком большое уклонение');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(‘He диагностированная ошибка триггера ') ;
END;
/
Страницы
- « первая
- ‹ предыдущая
- …
- 68
- 69
- 70
- 71
- 72
- …
- следующая ›
- последняя »
