Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Оснащения врачебно-сестринской бригады.
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2022-12-20 | 17 |
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);
|
|
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!