PRAGMA AUTONOMOUS_TRANSACTION

數據庫事務是一種單元操做,要麼是所有操做都成功,要麼所有失敗。在Oracle中,一個事務是從執行第一個數據管理語言(DML)語句開始,直到執行一個COMMIT語句,提交保存這個事務,或者執行一個ROLLBACK語句,放棄這次操做結束。數據庫

針對這種困境,Oracle提 供了一種便捷的方法,即自治事務。自治事務從當前事務開始,在其自身的語境中執行。它們能獨立地被提交或從新運行,而不影響正在運行的事務。正由於這樣, 它們成了編寫錯誤日誌表格的理想形式。在事務中檢測到錯誤時,您能夠在錯誤日誌表格中插入一行並提交它,而後在不丟失此次插入的狀況下回滾主事務。ide

由於自治事務是與主事務相分離的,因此它不能檢測到被修改過的行的當前狀態。這就好像在主事務提交以前,它們一直處於單獨的會話裏,對自治事務來講,它們是不可用的。然而,反過來狀況就不一樣了:主事務可以檢測到已經執行過的自治事務的結果。spa

PRAGMA AUTONOMOUS_TRANSACTION 自治事務 不受別的事務的影響日誌

1 CREATE OR REPLACE FUNCTION FUNC_CREATE_DEMO RETURN NUMBER IS
2   LINK_ID NUMBER;
3   PRAGMA AUTONOMOUS_TRANSACTION;
4 BEGIN
5   --LINK_ID RES_SPEC_ID OPR_STATE_ID
6   --do something  insert update delete
7   COMMIT;
8   RETURN LINK_ID;
9 END;
View Code
相關文章
相關標籤/搜索