- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
独立事务曾创能
目标通过本章学习,您将可以:了解独立事务的概念和用途了解独立事务的用法
问题的提出问题 想在执行当前一个由多个DML组成的transaction(事务)时,为每一步DML记录一些信息到跟踪表中,由于事务的原子性,这些跟踪信息的提交将决定于主事务的commit或rollback。 如: begin insert… setlog… update… setlog… insert… setlog… commit; end;解决方案 传统的解决方案之一:程序员不得不把这些跟踪信息记录到类似数组的结构中,然后在主事务结束后把它们存入跟踪表。
什么是独立事务独立事务 独立事务(AUTONOMOUSTRANSACTION,简称“AT”),又叫“自治事务”。AT是由主事务(以下MT)调用但是独立于它的事务。独立事务的特点 在AT被调用执行时,MT被挂起,在AT内部,一系列的DML可以被执行并且commit或rollback. 由于AT的独立性,它的commit和rollback并不影响MT的执行效果。在AT执行结束后,主事务获得控制权,又可以继续执行了。
Oracle中独立事务的用法条件编译PRAGMAAUTONOMOUS_TRANSACTION独立事务的使用范围 独立事务可以使用在以下的位置: 存储过程和函数; 本地过程和函数; 包; 对象方法; 匿名块的最顶层。
使用独立事务的注意事项注意事项在匿名PL/SQL块中,只有顶级的匿名PL/SQL块可以被设为AT如果AT试图访问被MT控制的资源,可能有deadlock发生Package不能被声明为AT,只有package所拥有的function和procedure才能声明为ATAT程序必须以commit或rollback结尾,否则会产生Oracle错误ORA-06519:activeautonomoustransactiondetectedandrolledback
THANKYOUSUCCESS2025/10/77可编辑
独立事务举例(1)记录结算日志(AT)PROCEDUREup_SetClearLog(i_TaskIDINVARCHAR2,i_LogInfoINVARCHAR2,i_LogLevelINVARCHAR2DEFAULTINFO)IS PRAGMAAUTONOMOUS_TRANSACTION; l_Logtime t_clear_log.logtime%TYPE; l_LogSeqNo NUMBER; l_Tradingday t_clear_log.Tradingday%TYPE;BEGIN l_Tradingday:=TO_CHAR(SYSDATE,‘YYYYMMDD); l_Logtime:=TO_CHAR(SYSDATE,HH24:MI:SS);SELECTseq_clear_log_id.NEXTVALINTOl_LogSeqNoFROMDUAL; INSERTINTOt_clear_log(TRADINGDAY,id,logtime,taskid,loglevel,loginfo) VALUES(l_Tradingday,l_LogSeqNo,l_Logtime,i_TaskID,i_LogLevel,i_LogInfo); COMMIT;EXCEPTION WHENOTHERSTHEN NULL;ENDup_SetClearLog;
独立事务举例(2)结算PROCEDUREup_settle(o_RetCodeOUTINT,--返回结果码o_RetMsgOUTVARCHAR2,--返回结果信息i_TradingDayINt_MemberEx.TradingDay%TYPE
文档评论(0)