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自治事务(Trigger)详解 #### 一、概述 Oracle数据库中的触发器是一种存储过程,它被设计为当特定事件发生时自动执行。这些事件包括数据修改操作,如INSERT、UPDATE或DELETE等。触发器可以确保数据的...
day24_自制事务调用者权限、函数、确定性函数 day25_package、trigger day26_体系结构组件概览 day27_管理口令文件和参数文件 day28_跟踪文件 day29_数据库起动三阶段、停库四种模式、手工创建数据库 day30_管理...
- 打开Oracle EBS,导航至“库存 -> 事务处理 -> 接收”。 - 出现“接收”界面后,进行“查找预期接收”的操作。(参见图1.1.1-1) - 输入查询条件,点击“查找”,接收信息抬头发出来。(参见图1.1.1-2) - ...
在Oracle系统中,对于自制件的标准成本,会根据物料清单和工艺路线自动计算。当销售发生时,成品的标准成本会结转到销售成本。生产过程中的制造差异(如未结转或超量结转的在制品成本)在生产任务单关闭时被确认为...
数据库管理系统(DBMS)是实现这些功能的软件,例如Oracle、MySQL、SQL Server和MongoDB等。它们提供了SQL(结构化查询语言)来操作数据,包括创建、读取、更新和删除数据。SQL是数据库管理的基础,学习者需要熟练...
在MFC小辞典中,关于ODBC的部分可能会讲解如何配置ODBC数据源,如何使用CDatabase和CRecordset类进行数据操作,以及如何处理查询结果和事务管理。 例如,创建一个ODBC数据源连接的步骤可能包括: 1. 在系统控制面板...