Введение в СУБД "Oracle". Космачев В.М - 71 стр.

UptoLike

ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
71
Trigger created.
При вводе значения атрибута, равного 90, происходит срабатывание триггера TRIG_TB2. Выводится диагностическое
сообщение, и вводится новая строка. Представленная операция выборки подтверждает ожидаемое изменение в
таблице.
SQL> insert into tabl values (90);
Слишком большое уклонение
В отличие от процедур, функций и пакетов сервер ORACLE не хранит код триггера в виде скомпилированного блока
PL/SQL. При первом запуске триггера его код считывается из словаря данных, компилируется, и скомпилированная
версия сохраняется в области SGA. Поэтому для часто используемых триггеров целесообразно код, отвечающий за
процедурную часть триггера, включать в хранимую процедуру, а в теле триггера оставлять только запись условий
запуска и вызовы соответствующих процедур и функций.
На предложения языка SQL, включенные в код триггера ORACLE, наложены следующие ограничения. Тело триггера
не может включать в себя явное использование управляющих операторов COMMIT, ROLLBACK и SAVEPOINT,
операторов языка определения данных CREATE, ALTER и DROP, операторов, управляющих разграничением доступа
GRANT и REVOKE, а также неявное выполнение перечисленных операторов через вызовы процедур и функций.
Строчный триггер срабатывает один раз для каждой строки. Внутри триггера можно обращаться к строке,
обрабатываемой в данный момент. Для этого служат две псевдозаписи — :OLD и :NEW, синтаксически они
рассматриваются как записи, хотя записями не являются, поэтому их называют псевдозаписями. Тип обеих
псевдозаписей определяется как
Активирующая_таблица&ROWТУРЕ ;
Псевдозапись :OLD не определена для операторов INSERT, a псевдозапись :NEW — для оператора DELETE, при этом
ошибка генерироваться не будет, но значения полей обеих записей будут NULL значениями. Двоеточие перед :NEW и
:OLD обязательно, это двоеточие используется для ограничения переменных привязки. Операции, которые
выполняются над записями, не могут быть выполнены над псевдозаписями.
:OLD и :NEW нельзя передавать процедурам и функциям, принимающим аргументы типа
Активирующая_таблица&ROWТУРЕ ;
Упражнения
30. Создать триггер, который считает среднюю стипендию и выдает диагностическое сообщение при ревышении
заданного порога уклонения вводимого значения атрибута в зависимости от средней стипендии, при этом
происходит заполнение некоторой таблицы.
31. Создать триггер, который считает средний балл в заданный день и выдает диагностическое сообщение при
превышении заданного порога уклонения вводимого значения атрибута в зависимости от среднего балла, при
этом происходит заполнение некоторой таблицы.
32. Создать триггер, который определяет границы изменения номеров предметов и выдает диагностическое
сообщение при превышении заданного порога уклонения вводимого значения атрибута, при этом происходит
заполнение таблицы.
33. Создать триггер, который определяет границы изменения номеров преподавателей и выдает диагностическое
сообщение при превышении заданного порога уклонения вводимого значения атрибута, при этом происходит
заполнение некоторой таблицы.
34. Создать триггер, который вычисляет средний рейтинг университетов и выдает диагностическое сообщение при
превышении заданного порога уклонения вводимого значения атрибута в зависимости от величины среднего
рейтинга, при этом происходит заполнение некоторой таблицы.
35. Создать триггер, который определяет границы изменения номеров лекторов в зависимости от номеров
читаемых курсов и выдает диагностическое сообщение при превышении заданного порога уклонения
вводимого значения атрибута, при этом происходит заполнение некоторой таблицы.
2.5. Последовательности
Последовательностьэто объект базы данных, генерирующий неповторяющиеся целые числа.
Числа, создаваемые последовательностью, могут:
Возрастать постоянно
Возрастать до определенного предела