问题标签 [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 投票
2 回答
225 浏览

database - 什么情况需要嵌套事务?

即使一个事务是嵌套的,在最外层事务提交之前它也不会被更新。那么嵌套事务是什么意思,具体情况是什么需要这个特性呢?

0 投票
1 回答
4471 浏览

sql-server - 带有嵌套事务的 SQL Try/Catch 逻辑

下面的存储过程是按照本文中的模板实现的:异常处理和嵌套事务。这个sproc应该处理死锁,它被另一个已经创建事务的sproc调用。内部事务的 BEGIN/COMMIT 的一些魔法不匹配,因为我得到了这个异常:Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0. 据我了解, catch 被执行,@xstate = -1是真的,整个外部事务被回滚。

发生不匹配的任何想法?

0 投票
3 回答
34559 浏览

sql-server - SAVE TRANSACTION vs BEGIN TRANSACTION(SQL Server)如何很好地嵌套事务

我有一个存储过程需要设置一个保存点,以便在某些情况下,它可以撤消它所做的一切并将错误代码返回给调用者,或者接受/提交它并将成功返回给调用者。但是无论调用者是否已经开始交易,我都需要它来工作。该文档在这个主题上非常混乱。这是我认为可行的方法,但我不确定所有的后果。

问题是 - 这Stored Procedure (SP)是别人叫的。所以我不知道他们是否已经开始交易......即使我要求用户开始交易以使用我的SP,我仍然对正确使用Save Points......

我的 SP 将测试交易是否正在进行,如果没有,则以BEGIN TRANSACTION. 如果事务已经在进行中,它将改为创建一个保存点SAVE TRANSACTION MySavePointName,并保存我所做的事实。

然后,如果我必须回滚我的更改,如果我之前做了BEGIN TRANSACTION,那么我会ROLLBACK TRANSACTION。如果我做了保存点,那么我会ROLLBACK TRANSACTION MySavePointName。这种情况似乎效果很好。

这是我有点困惑的地方——如果我想保留我已经完成的工作,如果我开始了一个事务,我将执行COMMIT TRANSACTION。但是如果我创建了一个保存点呢?我试过COMMIT TRANSACTION MySavePointName了,但是调用者尝试提交它的事务并得到一个错误:

COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

所以我想知道 - 可以回滚保存点(有效:ROLLBACK TRANSACTION MySavePointName不会回滚调用者的事务)。但也许永远不需要“提交”它?它只是停留在那里,以防您需要回滚到它,但是一旦原始事务被提交(或回滚)就消失了?

如果有“更好”的方式来“嵌套”交易,也请说明一下。我还没有想出如何嵌套,BEGIN TRANSACTION但只能回滚或提交我的内部事务。似乎ROLLBACK总是会回滚到顶部事务,而COMMIT只是减量@@trancount

0 投票
2 回答
18314 浏览

jakarta-ee - EJB 3.0 - 嵌套事务!= 需要新的?

我刚刚阅读了“掌握 EJB 3.0”的事务第 (10) 章,现在我对嵌套事务感到困惑。

书上说

“EJB 定义的事务管理器不支持嵌套事务;它只需要支持平面事务。” (站点 278,注)

这个事实不仅在本书中有所描述,我在其他书籍/网站上也发现了这一说法。

但是,如果我从 a 中调用“Requires New”注释方法,比如说“Required”注释 Methode,我所拥有的是嵌套事务,不是吗?我可以回滚或提交内部事务,而不影响外部事务。如果我想中止外部事务,我会抛出一个 EJBException 并且整个事务将被回滚。

那么仅仅是EJB 3.0规范不需要这种行为还是我误解了什么?我只是无法区分嵌套事务和所描述的行为。

问候诺曼

0 投票
2 回答
7457 浏览

sql-server - 嵌套事务的目的

我从来不明白嵌套事务有什么好处。提交嵌套事务不会提交任何内容 - 它只是减少了@@TRANCOUNT。并ROLLBACK回滚一切。

这有什么区别:

请给我一个例子,为什么要使用嵌套事务以及它们如何产生影响。

0 投票
3 回答
6801 浏览

java - 为什么 JTA 不支持嵌套事务

为什么 JTA 不支持嵌套事务?是因为实现它们的复杂性(我对此表示怀疑)还是一些设计原则?

0 投票
2 回答
10618 浏览

c# - 检查现有事务范围是否处于活动状态

我在用:

创建我的所有交易。我面临的问题是当我嵌套 2 时TransactionUtils.CreateTransactionScope()出现错误:Time-out interval must be less than 2^32-2. Parameter name: dueTm. 我假设这是因为它试图将子事务附加到父事务,并且合并的超时时间很大。

有没有办法判断新创建的事务是否是嵌套事务,这样我就可以避免设置超时?

另一种方法是传递一个参数,CreateTransactionScope()这样我就可以告诉它它是嵌套的并且不设置超时,但我宁愿找到一种自动处理它的方法。

0 投票
1 回答
8321 浏览

sql-server - 如何使用 try catch 管理嵌套事务

发生错误:

消息 3931,级别 16,状态 1,第 17 行当前事务无法提交,也无法回滚到保存点。回滚整个事务。

如何处理这个。

0 投票
1 回答
4129 浏览

c# - 嵌套事务范围.net

我正在使用 SQL Server 2008 R2 并尝试使用事务。

首先是关于 .net 和 SQL Server 中的事务的问题。如果我有这样的事情

此时我应该调用数据库来询问新插入问题的代码。现在我的第二个问题,在我问之前,我找到了这个链接Nested Transaction。根据上面的链接,我仍然想问我是否有这样的东西

如果我的内窥镜完成,查询 SQL Server 会给我新创建的问题的代码。

如果内部范围抛出异常并且我吞噬了它会发生什么,外部范围也会被处理掉吗?

调用 innerscope.Complete() 是否完成了该内部范围?

0 投票
1 回答
1711 浏览

transactions - Neo4j 中的嵌套事务

作为记录,我使用的是 Neo4j 2.0.0-M02。

我目前有一种方法可以搜索其用户 ID 上带有标签“用户”的节点,该用户 ID 作为节点属性“id”存储在图中。这一切都发生在事务中,因为这会自动关闭 ResourceIterator。

现在,我想在两个用户之间建立关系。我所拥有的只是他们的用户 ID。现在,我显然想重用通过 id 搜索用户的方法。我能想到三种方法。

第一个是显而易见的。使用现有方法检索两个节点。然后调用创建它们之间关系的方法。显然,这也发生在一个事务中,因此这需要三个事务。没那么高效。

第二种只是在创建关系的新方法中重用代码(而不是方法)。这样,我可以在一个事务中完成所有操作,但是我正在复制代码,这对开发人员来说并不是一个很好的做法。

第三种是在创建关系的新方法的事务中调用现有方法两次。这样我的代码仍然可以重用,但我不确定嵌套事务在 Neo4J 中是如何工作的。是否会因为已有交易而忽略现有方法中的交易?那将解决我的问题。

如果没有,我必须重新考虑我在哪里管理我的交易。我知道在服务中管理它们通常比在 DAO 中更好,但我想将 Neo4j 的东西排除在我的服务类之外。