Oracle 自制事务是指的存储过程和函数可以自己处理内部事务不受外部事务的影响,使用方法很简单如下:
FUNCTION F_GET_KEY_GEN(P_KYE_NAME IN VARCHAR2)
RETURN VARCHAR2 as
pragma autonomous_transaction; --设置为自制事务--
V_RECORD NUMBER;
BEGIN
commit;
END;
使用场景还要从项目中的一个BUG说起,项目中的工作流需要产生一个流水号,为了保存流水号的唯一再查找最新流水号的sql后增加了"FOR UPDATE WAIT 5"这样可以确保sql所查出来的值是所有事务提交后的值,如还有事务未提交等待5秒后出错。
SELECT T.KEY_VALUE, T.THIS_DATE
INTO V_KEY_ROW.KEY_VALUE, V_KEY_ROW.THIS_DATE
FROM T_KEYTABLE T
WHERE T.KEY_NAME = P_KYE_NAME
AND ROWNUM = 1
FOR UPDATE WAIT 5;
上面方法可以确保流水号最新但是带来了一个问题,如果创建流水号的操作位于一个业务操作很复杂耗时很长的事务当中,当这个事务并发时就会出现流水号创建错误!这个BUG解决方法我就是使用的自制事务,让创建流水号自己提交事务且对别的事务没有影响。
附件中有流水号产生的函数
分享到:
相关推荐
Oracle事务与锁定Oracle事务与锁定Oracle事务与锁定
oracle 事务 回滚 存储过程 自用
在触发器中使用自制事务及调用存储过程 Declare Pragma Autonomous_Transaction; ...
java 代码写的关于Oracle的 事务处理
Oracle自治事务的介绍(Autonomous_Transactions)PRAGMA_AUTONOMOUS_TRANSACTION
介绍在oracle中如何使用事务,有例子,很详细
oracle事务处理,oracle基础使用,oracle
在本文中,您将了解到如何在 Visual Basic .NET (VB.NET)和 Visual C# .NET(C#)中使用数据库事务。具体来讲,您将系统学习数据库事务、在 .NET 程序中使用 OracleTransaction 对象以及如何设置事务保存点。
如何创建 OracleTransaction 对象并用它们将事务提交给数据库,如何使用保存点部分回滚一个事务,以及 Oracle 数据库如何分离并发事务。同时分别提供了vb.net和c#两种开发工具提供了具体实例代码
主要针对oracle事务槽讲解。一本很经典的电子书。分享给大家
Oracle事务、锁表查询及相关实用查询SQL语句
Oracle学习笔记(事务知识点),事务处理:所谓的事务处理其实就是保证数据操作的完整性,所有的操作要么同时成功,要么同时失败
ORACLE体系结构、并发与多版本,事务机制、Sql优化基本方法介绍
ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,用来记录该块所有发生的事务,一个itl可以看作是一个记录,在一个时间,可以记录一个事务(包括提交或者未提交事务)。当然,如果这个事务已经...
详细的关于Oracles事务的实验,学习后,应该对oracle事务非常清楚。
很好的,经典.创建Oracle 临时表,可以有两种类型的临时表:会话级的临时表,事务级的临时表 。
封装了对Oracle数据库的连接、增删改查、事务处理、查询直接得到数据集。使对数据库的操作变得很方便、简易
1.通过ODBC使C#能够对MySQL数据进行访问,并可以...2.通过ODBC使C#能够对Oracle数据进行访问,并可以进行事务处理。 3.文档里面包含了环境配置,软件安装的全过程。最后包含了可执行的数据库连接共同的C#代码提供参考。