Составители:
Рубрика:
ГУАП МЦИТ
Введение в «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. Последовательности
Последовательность — это объект базы данных, генерирующий неповторяющиеся целые числа.
Числа, создаваемые последовательностью, могут:
• Возрастать постоянно
• Возрастать до определенного предела
Страницы
- « первая
- ‹ предыдущая
- …
- 69
- 70
- 71
- 72
- 73
- …
- следующая ›
- последняя »
