Middle
Šta je autonomna transakcija? Kako je koristiti i kako je deklarisati?
sobes.tech АИ
Одговор од АИ
Автономная транзакция — это независимая транзакция, которая выполняется внутри другой транзакции, но при этом не влияет на её состояние и может быть зафиксирована или отменена отдельно.
Она полезна, когда нужно выполнить отдельные операции логирования, аудита или сохранения промежуточных данных, не влияя на основную транзакцию.
В Oracle автономная транзакция объявляется с помощью pragma:
PRAGMA AUTONOMOUS_TRANSACTION;
Пример использования:
CREATE OR REPLACE PROCEDURE log_error(p_msg VARCHAR2) IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO error_log(message, log_date) VALUES (p_msg, SYSDATE);
COMMIT; -- фиксируем изменения автономно
END;
Таким образом, даже если основная транзакция откатится, запись в журнал ошибок сохранится.