oracle自治事务的写法_Oracle的自治事务
自治事務(autonomous transaction)允許你創建一個"事務中的事務",它能獨立于其父事務提交或回滾。利用自治事務,可以掛起當前執行的事務,開始一個新事務,完成一些工作,然后提交或回滾,所有這些都不影響當前所執行事務的狀態。自治事務提供了一種用PL/SQL控制事務的新方法,可用于:頂層匿名塊;
本地(過程中的過程)、獨立或打包的函數和過程;
對象類型的方法;
數據庫觸發器。
使用例子演示自治事務如何工作--創建測試表用于保存信息
zx@ORCL>create?table?t?(?msg?varchar2(25)?);
Table?created.
--創建自治事務的存儲過程
zx@ORCL>create?or?replace?procedure?Autonomous_Insert
2??as
pragma?autonomous_transaction;---指示自治事務語句
4??begin
5??????????insert?into?t?values?(?'Autonomous?Insert'?);
6??????????commit;
7??end;
8??/
Procedure?created.
--創建普通存儲過程
zx@ORCL>create?or?replace?procedure?NonAutonomous_Insert
2??as
3??begin
4??????????insert?into?t?values?(?'NonAutonomous?Insert'?);
5??????????commit;
6??end;
7??/
Procedure?created.
觀察使用PL/SQL代碼中非自治事務的行為zx@ORCL>begin
2??????????insert?into?t?values?(?'Anonymous?Block'?);
3??????????NonAutonomous_Insert;
4??????????rollback;
5??end;
6??/
PL/SQL?procedure?successfully?completed.
zx@ORCL>select?*?from?t;
MSG
---------------------------------------------------------------------------
Anonymous?Block
NonAutonomous?Insert
可以觀察到非自治事務的過程中的commit也把調用它的父事務也提交了,而父事務中的rollback沒有起到作用。
再觀察使用PL/SQL代碼中非自治事務的行為zx@ORCL>delete?from?t;
2?rows?deleted.
zx@ORCL>commit;
Commit?complete.
zx@ORCL>begin
insert?into?t?values?(?'Anonymous?Block'?);
Autonomous_Insert;
rollback;
end;
6??/
PL/SQL?procedure?successfully?completed.
zx@ORCL>select?*?from?t;
MSG
---------------------------------------------------------------------------
Autonomous?Insert
可以看到,自治事務過程中的commit只把它本身的事務提交了,而對于父事務的語句沒有起到作用,而父事務中的rollback對自治事務中的語句也沒有作用。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的oracle自治事务的写法_Oracle的自治事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贴花纸怎么贴_木纹纸怎么贴? 贴木纹纸的
- 下一篇: 1ke android逆向助手_andr