Примеры IN AUTONOMOUS TRANSACTION
Данный пример демонстрирует использование автономной транзакции в триггере на событие подключения к базеданных для регистрации всех попыток соединения, в том числе и неудачных.
CREATE TRIGGER TR_CONNECT ON CONNECT
AS
BEGIN
-- Все попытки соединения с БД сохраняем в журнал
IN AUTONOMOUS TRANSACTION DO
INSERT INTO LOG(MSG)
VALUES ('USER ' || CURRENT_USER || ' CONNECTS.');
IF (CURRENT_USER IN (SELECT
USERNAME
FROM
BLOCKED_USERS)) THEN
BEGIN
-- Сохраняем в журнал, что попытка соединения
-- с БД оказалась неудачной
-- и отправляем сообщение о событии
IN AUTONOMOUS TRANSACTION DO
BEGIN
INSERT INTO LOG(MSG)
VALUES ('USER ' || CURRENT_USER || ' REFUSED.');
POST_EVENT 'CONNECTION ATTEMPT' || ' BY BLOCKED USER!';
END
-- теперь вызываем исключение
EXCEPTION EX_BADUSER;
END
END