Middle
За какво е необходима директивата PRAGMA AUTONOMOUS_TRANSACTION?
sobes.tech AI
Отговор от 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;
В этом примере процедура записи ошибки выполняется в автономной транзакции, поэтому запись в лог сохраняется независимо от результата основной транзакции.