Oracle Database
Transakcje autonomiczne
Szukaj…
Uwagi
Typowe przypadki użycia dla transakcji autonomicznych to.
- Do budowania dowolnego rodzaju środowiska rejestrowania, takiego jak środowisko rejestrowania błędów wyjaśnione w powyższym przykładzie.
- Do kontroli operacji DML w wyzwalaczach w tabelach niezależnie od ostatecznego statusu transakcji (COMMIT lub ROLLBACK).
Korzystanie z autonomicznej transakcji do rejestrowania błędów
Poniższa procedura jest ogólna i będzie używana do rejestrowania wszystkich błędów w aplikacji we wspólnej tabeli błędów.
CREATE OR REPLACE PROCEDURE log_errors
(
p_calling_program IN VARCHAR2,
p_error_code IN INTEGER,
p_error_description IN VARCHAR2
)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO error_log
VALUES
(
p_calling_program,
p_error_code,
p_error_description,
SYSDATE,
USER
);
COMMIT;
END log_errors;
Poniższy anonimowy blok PLSQL pokazuje, jak wywołać procedurę log_errors.
BEGIN
DELETE FROM dept WHERE deptno = 10;
EXCEPTION
WHEN OTHERS THEN
log_errors('Delete dept',sqlcode, sqlerrm);
RAISE;
END;
SELECT * FROM error_log;
CALLING_PROGRAM ERROR_CODE ERROR_DESCRIPTION ERROR_DATETIME DB_USER
Delete dept -2292 ORA-02292: integrity constraint violated - child record found 08/09/2016 APEX_PUBLIC_USER
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow