Sobes.tech
Middle

Qu'est-ce qu'une transaction autonome ? Comment l'utiliser et comment la déclarer ?

sobes.tech IA

Réponse de l'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;

Таким образом, даже если основная транзакция откатится, запись в журнал ошибок сохранится.