這和子交易(Sub-Transaction)是不同的概念:子交易和上層的交易是巢狀的概念,仍然是單一個工作程序,在子交易中發生 Rollback,就對整個交易都會 Rollback;而 Autonomous Transaction 則是在呼叫之時,額外分支出另外一個交易執行,分之出去的交易活動成敗(Commit/Rollback)不會再影響目前的交易,兩者獨立開來。
在 Oracle 的 Stored Procedure 中,有一個 PRAGMA AUTONOMOUS_TRANSACTION 的修飾字,讓一個函數的運行,額外分支出一個交易。
不過到 Postgres 9.6 為止,都沒有「直接」支援這樣的功能,那在 Postgres 9.6 要如何做到呢?