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