【DB筆試面試392】Oracle的自治事務是什麼?
- 2019 年 10 月 10 日
- 筆記
Q
題目
Oracle的自治事務是什麼
A
答案
Oracle的自治事務(Autonomous Transaction)是將一個主事務分割成幾個子事務,在執行完子事務以後再繼續執行主事務。這裡的關鍵是,子事務是獨立於主事務的,子事務中的ROLLBACK和COMMIT操作只會影響子事務中的DML操作;同樣,主事務中的ROLLBACK和COMMIT操作只會影響主事務中的DML操作,而不會影響子事務中的操作。在子事務中已經COMMIT的操作,不會被主事務中的ROLLBACK撤銷。
可以在程式開頭使用如下命令實現自治事務:
PRAGMA AUTONOMOUS_TRANSACTION;
定義自治事務必須遵循以下規則:
(1)如果要被定義為自治事務的程式是匿名的,那麼它必須是一個最外層的程式塊。
(2)如果要被定義為自治事務的程式不是匿名的,那麼它必須是函數或者存儲過程。在一個包中,只有其中的函數或存儲過程能夠定義成自治事務。整個包不能聲明為自治事務。
(3)一個對象的方法可以聲明為自治事務。
(4)觸發器可以聲明為自治事務。
(5)內嵌程式塊不能聲明為自治事務。
需要注意的是,對於一個匿名的自治事務程式塊來說,只有這個塊的BEGIN和END之間的程式碼被看作是自治事務。
自治事務可以用來解決「ORA-14551: 無法在查詢中執行DML操作」錯誤。觸發器無法包含COMMIT語句,除非有PRAGMA AUTONOMOUS_TRANSACTION標記。但是,只有觸發中的語句才能被提交,主事務則不行。

DB筆試面試歷史連接
http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w |
---|
About Me:小麥苗
● 本文作者:小麥苗,只專註於資料庫的技術,更注重技術的運用
● 作者部落格地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列題目來源於作者的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
● QQ:646634621 QQ群:618766405
● 題目解答若有不當之處,還望各位朋友批評指正,共同進步