美文网首页
在一个Session里实现两个事务

在一个Session里实现两个事务

作者: 马云生 | 来源:发表于2021-12-02 09:50 被阅读0次

在一次实装中,遇到了下面的情况。

在Java调用PLSQL过程中(同一个Session)想实现业务数据登陆失败的时候,业务数据回滚。

同时将处理的一些信息作为历史Log信息写入数据库的历史操作表内提交。

可以归结为,同一个Session中实现业务数据和Log数据的事务分离。

实现思路,通过Plsql里的PRAGMA AUTONOMOUS_TRANSACTION实现

实现方法

  --Log数据Plsql

Create or replace procedure INSERT_LOG(MESSAGE varchar2) IS

PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

  INSERT INTO LOG VALUES(MESSAGE);

COMMIT;

END;

   --业务数据Plsql

Create or replace procedure INSERT_EMPLOYEE(

FIRST_NAME varchar2,

LAST_NAME varchar2) IS

BEGIN

COMMIT;

SET TRANSACTION NAME 'tran';

SAVEPOINT sp1;

INSERT_LOG('this is a log');

INSERT INTO EMPLOYEES VALUES(FIRST_NAME ,LAST_NAME );

EXCEPTION

when others then

      rollback to sp1;

END;

相关文章

  • 在一个Session里实现两个事务

    在一次实装中,遇到了下面的情况。 在Java调用PLSQL过程中(同一个Session)想实现业务数据登陆失败的时...

  • JMS-ActiveMQ事务与签收方式-02

    添加事务 修改Session配置,启用事务/** * 3.通过Connection对象创建Session会话(上下...

  • Hibernate下openSession和getCurrent

    测试1:openSession在不开启事务的情况下执行操作 Session session= SessionFac...

  • hibernate的五大接口

    session transaction1、事务是由session来产生的2、事务默认是关闭的,必须手动开启

  • Session

    Session 的实现原理 Session 的实现依赖 Cookie

  • 1.简介

    Spring Session Spring Session 提供了一个管理用户session信息的接口和实现 1....

  • hibernate

    hibernate默认不提交事务 hibernate有2级缓存 session.save() session.sa...

  • flask 源码解析:session

    7.flask 源码解析:session session 简介 在解析 session 的实现之前,我们先介绍一下...

  • hibernate和mybatis缓存

    相同: 1.都分为两级缓存,一级缓存和二级缓存,一级缓存都是session事务级别的,在一个事务中有效,事务执行完...

  • 通过Thread session管理 jms事务

    JMS事务管理机制有两种 Session管理的事务 外部管理的事务 JmsTransactionManager J...

网友评论

      本文标题:在一个Session里实现两个事务

      本文链接:https://www.haomeiwen.com/subject/xqlyxrtx.html