Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
|
из
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);
|
|
|
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2025 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!