Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Оснащения врачебно-сестринской бригады.
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Синтаксис создания триггерной процедуры:
CREATE [OR REPLACE] TRIGGER имя _триггерной процедуры
{BEFORE | AFTER | INSTEAD OF} класс _события
ON
{NESTED TABLE столбец_вложенной_таблицы OF представление
| базовая_или_выводимая_ таблица
| DATABASE
| [ схема. ] SCHEMA
}
[ именующая_фраза ]
[FOR EACH ROW]
[WHEN (условие_срабатывания)]
{
[DECLARE
[PRAGMA AUTONOMOUS_TRANSACTION;]
раздел других объявлений ]
BEGIN
раздел кода
[EXCEPTION
раздел обработки исключительных ситуаций ]
END [ имя_триггерной процедуры ]
|
CALL имя_процедуры [(список_параметров)]
};
Классы событий для триггерных процедур перечислены ниже:
| Группа событий | Категория | Описание |
| INSERT | DML | Срабатывает при постановке строки в таблицу |
| UPDATE | DML | Срабатывает при модификации строки в таблице. При наличии уточнения OF (UPDATE OF список_полей) может срабатывать только при модификации определенных столбцов |
| DELETE | DML | Срабатывает при удалении строк из таблицы. Не срабатывает при TRUNCATE |
| CREATE(8.1) | DDL | Срабатывает при выполнении операции CREATE создания объектов, попадающих в перечень в ALL_OBJECTS. Может создаваться на уровне отдельной схемы или всей БД |
| ALTER(8.1) | DDL | Срабатывает при выполнении операции ALTER изменения свойств объектов, попадающих в перечень в ALL_OBJECTS. Может создаваться на уровне отдельной схемы или всей БД |
| DROP(8.1) | DDL | Срабатывает при выполнении операции DROP удаления объектов, попадающих в перечень в ALL_OBJECTS. Может создаваться на уровне отдельной схемы или всей БД |
| ANALYZE(9) ASSOCIATE STATISTICS(9) AUDIT(9) COMMENT(9) DISASSOCIATE STATISTICS(9) GRANT(9) NOAUDIT(9) RENAME(9) REVOKE(9) TRUNCATE(9) | DDL | Прочие группы DDL-событий |
| DDL(9) | DDL | Обобщенное название для всех DDL-событий |
| SERVERERROR(8.1) | База данных | Срабатывает при фиксации системой серверной ошибки. Может быть только типа AFTER |
| LOGON(8.1) | База данных | Срабатывает при возникновении нового сеанса работы пользователя (программы). Может быть только типа AFTER |
| LOGOFF(8.1) | База данных | Срабатывает при окончании работы сеанса. Может быть только типа BEFORE. Не срабатывает при разрыве сеанса. |
| STARTUP(8.1) | База данных | Срабатывает при открытии БД. Может быть только типа AFTER |
| SHUTDOWN(8.1) | База данных | Срабатывает при закрытии БД. Может быть только типа BEFORE. Не срабатывает при SHUTDOWN ABORT. |
| SUSPEND(9) | База данных | Срабатывает при приостановке транзакции вследствие нехватки доступной дисковой памяти при добавлении данных (исчерпана дисковая память, достигнут максимум числа экстентов в сегменте, исчерпана квота на табличное пространство). Если причину устранить, операцию DML можно продолжить. |
(8.1) Cуществуют, начиная с версии 8.1
(9) Cуществуют, начиная с версии 9
Типы AFTER и BEFORE.
именующая_фраза (REFERENCING) задает собственное имя для указания в теле процедуры новых и старых псевдостолбцов при выполнении операций INSERT, DELETE и UPDATE (DML-триггерные процедуры). На столбцы типа LONG и LONG RAW такое именование не распространяется. Присваивание распространяется только на индивидуальные столбцы (и не на всю запись). Для INSERT старые значения, а для DELETE новые, всегда NULL.
Указание FOR EACH ROW (DML-триггерные процедуры).
WHEN указывает на дополнительное условие, необходимое для срабатывания триггерной процедуры (DML-триггерные процедуры).
Пример создания триггерной процедуры:
CREATE OR REPLACE TRIGGER set_hiredate
BEFORE INSERT ON emp
REFERENCING NEW AS inserted_employee
FOR EACH ROW
BEGIN:inserted_employee.hiredate:= SYSDATE; END set_hiredate;
/
Примечание. Работа этой процедуры не эквивалентна следующему изменению описания таблицы EMP:
ALTER TABLE emp MODIFY (hiredate DATE DEFAULT SYSDATE);
Упражнение: проверить это.
Пример того, как можно переделать предыдущую процедуру для имитации DEFAULT SYSDATE в поле HIREDATE:
CREATE OR REPLACE TRIGGER set_hiredate
BEFORE INSERT ON emp
REFERENCING NEW AS inserted_employee
FOR EACH ROW
WHEN (inserted_employee.hiredate IS NULL)
BEGIN:inserted_employee.hiredate:= SYSDATE; END set_hiredate;
/
Фраза CALL может заменять тело триггерной процедуры в виде блока PL/SQL вызовом обычной процедуры на PL/SQL или Java, например:
CREATE TRIGGER scott.salary_check
BEFORE INSERT OR UPDATE OF sal, job ON scott.emp
FOR EACH ROW
WHEN (NEW.job <> 'PRESIDENT')
CALL check_sal (:NEW.job,:NEW.sal,:NEW.name);
|
|
|
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!