Назад к вопросам
Middle
22
Для чего нужна директива PRAGMA AUTONOMOUS_TRANSACTION?
Компании, где спрашивали
МВидео/эльдорадо
Ответ от нейросети
sobes.tech AI
Директива PRAGMA AUTONOMOUS_TRANSACTION используется в Oracle PL/SQL для создания автономной транзакции внутри основной транзакции. Это значит, что код, помеченный этой директивой, выполняется в отдельной транзакции, независимой от основной.
Это полезно, когда нужно выполнить операции, которые не должны зависеть от успеха или неуспеха основной транзакции. Например, запись логов или аудита, даже если основная транзакция откатывается.
Пример:
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;
В этом примере процедура записи ошибки выполняется в автономной транзакции, поэтому запись в лог сохраняется независимо от результата основной транзакции.