问题标签 [nested-transactions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2280 浏览

mysql - 嵌套事务的总回滚

我真的很喜欢Yii 的NestedPDO解决方案,但我需要一些不同的事务处理。

只有当所有嵌套事务都可以提交并且一个事务执行回滚时,我才想提交我的嵌套事务,所有事务都应该回滚。

我怎样才能做到这一点?

我尝试更改不起作用的回滚功能:

我正在考虑调整 NestedPDO:在函数 commit() 中仅在最外层事务上执行提交,在函数 rollBack() 中回滚到最外层事务,无论哪个子事务导致回滚。但我无法完成它......

我正在使用 MySQL 和 InnoDB 表,我不确定自动提交,但是当在事务中回显自动提交的值时,我总是得到值 1,这应该意味着自动提交已打开,但在事务中自动提交应该设置为 0。我'不确定这是否是整个回滚对我不起作用的原因?

0 投票
1 回答
3918 浏览

sql-server - 关于 SQL Server 中嵌套事务的建议

我有一些“基本操作”存储过程,比如BookAVehicleUnBookAVehicle. 他们都在交易中。

但是现在我需要一个更复杂的存储过程:RescheduleBooking. 它还需要是事务性的。

现在,ResceduleBooking我想从内部调用BookAVehicle,在这种情况下,我不希望内部事务回滚。

但是当我BookAVehicle直接调用时,我想保持回滚。

关于如何优雅地做到这一点的任何建议?

我在想一些类似于“包装”存储过程的东西,它作为参数采用存储过程的名称,并且只包含一个事务和对参数存储过程的调用。

因此,当我“直接”调用它时,我会调用:

当我从另一个事务中调用它时,我调用:

0 投票
0 回答
180 浏览

sql - 我们需要嵌套数据库事务吗?

我正在使用 JDBC 编写自己的数据层来访问 SQL 数据库,其中一个主要组件是事务管理器。

我有点困惑是否支持这个组件中的嵌套事务。嵌套事务的示例代码如下:

在我过去的开发实验中,我从来不需要它们,我认为它们使代码更加复杂。但是,我不确定它们是无用的还是有用的。您能否举一些需要嵌套事务或至少有利的示例情况?以及它们的优缺点是什么?

为了澄清我的问题并解释我所说的交易的含义,我在下面粘贴了我的评论

我正在使用 JDBC。因此,事务管理器独立于底层数据库。通过事务,我的意思是非自动提交 JDBC 连接。事务管理器返回一个带有非自动提交连接的事务对象。使用此事务的客户端代码通过提交事务对象来提交和关闭连接。

提前致谢。

0 投票
1 回答
593 浏览

sql-server-2012 - 是否需要在数据库服务器和 Web 服务器上启动 MSDTC 服务?它也应该在镜像服务器上运行吗?

我的项目支持嵌套事务,因此我们在 Web 服务器和数据库服务器上运行 MSDTC 服务。该项目运行良好。但是,我们在数据库服务器上建立了数据库镜像,因此无论何时发生故障转移,使用嵌套事务的站点页面都会引发错误:

该操作对事务的状态无效。

我们也在镜像数据库上运行 MSTDC 服务。请建议应该做些什么来克服这个问题。

0 投票
1 回答
1105 浏览

hibernate - Hibernate nested transactions / sessions and proxy associations

I am using hibernate 4 and spring-aop to handle transactions so that there is always an open transaction on the server side.

I want to create a nested transaction to work on it in isolation but I get an error: Illegal attempt to associate a proxy with two open sessions. See example below:

Entity e2 created with data from a persisted entity e1 and saved in a nested transaction. E1 has a deep graph not completely initialized.

What would be the correct way of creating e2 without throwing an exception?

Example scheme:

Code example:

Maven project with detailed test case at [https://github.com/cemartins/test-cases].

0 投票
1 回答
73 浏览

sql-server - 使用嵌套事务执行查询时发生错误

我在尝试执行下面的查询时遇到错误。

错误是

EXECUTE 之后的事务计数表明 BEGIN 和 COMMIT 语句的数量不匹配。先前计数 = 1,当前计数 = 0。

我已经阅读了许多关于类似问题的主题,但到目前为止还不清楚我的情况是什么原因。谁能解释我为什么会得到它以及我应该怎么做才能避免它。提前致谢

更新。我可以简化 MyProc 的代码,例如

它不能解决我的问题。发生同样的错误

0 投票
2 回答
604 浏览

grails - grails嵌套事务bean重置

我将 grails 1.3.7 与 Oracle 11g 一起使用并尝试管理内部事务。我有一个 bean Person,它被传递给进行一些修改的事务(Propagation.REQUIRED)服务方法。然后将其传递给另一个事务性(propagation = Propagation.REQUIRES_NEW)方法,该方法进行一些其他修改,然后引发异常。我期望看到的是对第二个服务的所有修改的回滚,但对第一个服务的修改仍然有效。这是这种情况:

然后我运行 grails 控制台并在它结束后检查数据库。...

我尝试在引导程序中激活它后使用 Propagation.NESTEDtransactionManager.setNestedTransactionAllowed(true)并使用保存点,如这篇文章 grails transaction set savepoint 但仍然得到相同的结果。

我错过了什么????

先感谢您。

0 投票
1 回答
3040 浏览

java - Spring事务:从带有requires的方法调用带有requires_new的方法

我想了解在嵌套事务与调用和被调用方法的隔离级别不同的情况下,何时准确提交以及何时准确回滚,

例如,我有两个 spring 服务,我从 service1 的 method1 调用 service2 的 method2。

Method1 具有 REQUIRED 事务范围,Method2 具有 REQUIRES_NEW 事务范围,如下面的程序所示。

现在我的问题是,据我所知,REQUIRES_NEW 将启动一个新事务,但它会立即在现有的方法 2 上提交,还是 spring 会等到方法 1 完成然后提交?

我感兴趣的是在什么时间提交发生并且 DB 中的行锁被释放,这在方法 2 中持久存在。

注意:这里我将这两种方法放在不同的服务中,以便spring可以实现嵌套事务。

提前致谢,

瓦利

0 投票
4 回答
1001 浏览

sql-server - 嵌套存储过程中的嵌套事务

实际上,我对在存储过程中使用嵌套事务有点困惑。我需要在一个主程序中调用两个/三个程序。

例如:

我是否以正确的方式做这件事?

0 投票
0 回答
203 浏览

.net - .Net中的嵌套sql事务

我有两种方法可以启动 sql 事务并在方法内提交(或回滚)连接。

我必须创建另一个执行方法 1 和 2 的逻辑但在单个事务中的方法。

我不想在 Method1And2 中复制方法 1 和 2 的代码,而是想从 Method1And2 调用 Method1 和 Method2,但仍保留单个数据库事务。如果直接调用 Method1 和 Method2,它们也将需要它们自己的事务。

在 .Net 中实现此功能的最佳方法是什么?

谢谢。