Middle
¿Qué es una transacción autónoma? ¿Cómo se usa y cómo se declara?
sobes.tech AI
Respuesta de la IA
Автономная транзакция — это независимая транзакция, которая выполняется внутри другой транзакции, но при этом не влияет на её состояние и может быть зафиксирована или отменена отдельно.
Она полезна, когда нужно выполнить отдельные операции логирования, аудита или сохранения промежуточных данных, не влияя на основную транзакцию.
В 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;
Таким образом, даже если основная транзакция откатится, запись в журнал ошибок сохранится.