问题标签 [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.
database - 什么情况需要嵌套事务?
即使一个事务是嵌套的,在最外层事务提交之前它也不会被更新。那么嵌套事务是什么意思,具体情况是什么需要这个特性呢?
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
是真的,整个外部事务被回滚。
发生不匹配的任何想法?
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
。
jakarta-ee - EJB 3.0 - 嵌套事务!= 需要新的?
我刚刚阅读了“掌握 EJB 3.0”的事务第 (10) 章,现在我对嵌套事务感到困惑。
书上说
“EJB 定义的事务管理器不支持嵌套事务;它只需要支持平面事务。” (站点 278,注)
这个事实不仅在本书中有所描述,我在其他书籍/网站上也发现了这一说法。
但是,如果我从 a 中调用“Requires New”注释方法,比如说“Required”注释 Methode,我所拥有的是嵌套事务,不是吗?我可以回滚或提交内部事务,而不影响外部事务。如果我想中止外部事务,我会抛出一个 EJBException 并且整个事务将被回滚。
那么仅仅是EJB 3.0规范不需要这种行为还是我误解了什么?我只是无法区分嵌套事务和所描述的行为。
问候诺曼
sql-server - 嵌套事务的目的
我从来不明白嵌套事务有什么好处。提交嵌套事务不会提交任何内容 - 它只是减少了@@TRANCOUNT
。并ROLLBACK
回滚一切。
这有什么区别:
请给我一个例子,为什么要使用嵌套事务以及它们如何产生影响。
java - 为什么 JTA 不支持嵌套事务
为什么 JTA 不支持嵌套事务?是因为实现它们的复杂性(我对此表示怀疑)还是一些设计原则?
c# - 检查现有事务范围是否处于活动状态
我在用:
创建我的所有交易。我面临的问题是当我嵌套 2 时TransactionUtils.CreateTransactionScope()
出现错误:Time-out interval must be less than 2^32-2. Parameter name: dueTm
. 我假设这是因为它试图将子事务附加到父事务,并且合并的超时时间很大。
有没有办法判断新创建的事务是否是嵌套事务,这样我就可以避免设置超时?
另一种方法是传递一个参数,CreateTransactionScope()
这样我就可以告诉它它是嵌套的并且不设置超时,但我宁愿找到一种自动处理它的方法。
sql-server - 如何使用 try catch 管理嵌套事务
发生错误:
消息 3931,级别 16,状态 1,第 17 行当前事务无法提交,也无法回滚到保存点。回滚整个事务。
如何处理这个。
c# - 嵌套事务范围.net
我正在使用 SQL Server 2008 R2 并尝试使用事务。
首先是关于 .net 和 SQL Server 中的事务的问题。如果我有这样的事情
此时我应该调用数据库来询问新插入问题的代码。现在我的第二个问题,在我问之前,我找到了这个链接Nested Transaction。根据上面的链接,我仍然想问我是否有这样的东西
如果我的内窥镜完成,查询 SQL Server 会给我新创建的问题的代码。
如果内部范围抛出异常并且我吞噬了它会发生什么,外部范围也会被处理掉吗?
调用 innerscope.Complete() 是否完成了该内部范围?
transactions - Neo4j 中的嵌套事务
作为记录,我使用的是 Neo4j 2.0.0-M02。
我目前有一种方法可以搜索其用户 ID 上带有标签“用户”的节点,该用户 ID 作为节点属性“id”存储在图中。这一切都发生在事务中,因为这会自动关闭 ResourceIterator。
现在,我想在两个用户之间建立关系。我所拥有的只是他们的用户 ID。现在,我显然想重用通过 id 搜索用户的方法。我能想到三种方法。
第一个是显而易见的。使用现有方法检索两个节点。然后调用创建它们之间关系的方法。显然,这也发生在一个事务中,因此这需要三个事务。没那么高效。
第二种只是在创建关系的新方法中重用代码(而不是方法)。这样,我可以在一个事务中完成所有操作,但是我正在复制代码,这对开发人员来说并不是一个很好的做法。
第三种是在创建关系的新方法的事务中调用现有方法两次。这样我的代码仍然可以重用,但我不确定嵌套事务在 Neo4J 中是如何工作的。是否会因为已有交易而忽略现有方法中的交易?那将解决我的问题。
如果没有,我必须重新考虑我在哪里管理我的交易。我知道在服务中管理它们通常比在 DAO 中更好,但我想将 Neo4j 的东西排除在我的服务类之外。