问题标签 [rollback]

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 回答
3918 浏览

mysql - 重复键错误不取消/回滚mysql事务

在 mysql innodb 事务中,我预计重复键错误会导致回滚。它没有,而是简单地抛出一个错误并继续执行下一个命令。一旦到达 COMMIT 命令,事务将被提交,没有重复键导致命令。

这是预期的行为吗?如果是这样,如何设置它以便在发生此类错误时回滚而不是提交事务?

测试环境:

预期结果:表test为空

实际结果:表test包含一条值为 5 的记录

0 投票
3 回答
832 浏览

java - 在 Java 中处理 RollbackException

有没有办法“重播”交易?我的意思是,有时我会得到 RollbackException 并回滚事务。然后我可以“克隆”事务并重试,还是一旦调用回滚,事务就会丢失?我真的需要更改,并且真的不想跟踪每个更改以便稍后重新运行...

谢谢,乌迪

0 投票
2 回答
399 浏览

sql - 从事务中的 SQL 批处理中止错误中恢复?选择?

我正在寻找一种方法来继续执行事务,尽管在插入低优先级数据时出现错误。看起来真正的嵌套事务可能是一个解决方案,但 SQL Server 2005/2008 不支持它们。另一种解决方案是有逻辑来确定错误是否严重,但这似乎也不可能。

以下是有关我的方案的更多详细信息:

使用 ADO.NET/C# 定期将数据插入到数据库中,虽然其中一些是至关重要的,但也可能会毫无问题地丢失一些数据。插入完成后,将对数据进行一些计算。(重要的和非重要的)整个过程都在事务中,所以一切都保持同步。

目前,使用事务保存点,并对非重要插入期间发生的异常进行部分回滚。但是,这不适用于“批量中止”错误,它会自动回滚整个事务。我知道有些错误很严重,但是 SQL Server 将诸如失败的强制转换之类的事情视为批处理中止错误。(有关批处理错误的信息)如果这些错误发生在低优先级数据上,我正在尝试防止它们降低整个插入。

如果我所描述的内容是不可能的,我愿意考虑任何替代方法来实现数据完整性,但允许非重要插入失败。

谢谢你的帮助。

0 投票
6 回答
3129 浏览

c# - 如何实现回滚功能?

我想创建一个 C# 应用程序,在其中复制两个不同文件夹中的一些文件(已经包含旧版本文件)并运行 sql 脚本。在整个过程中,如果产生任何异常,我需要回滚所有更改。

对于 sql 脚本,可以使用事务,但是如何实现文件复制过程和回滚?

0 投票
2 回答
1321 浏览

c# - 无法使用实体框架回滚事务

我必须对未提交的更改进行查询,并尝试使用事务,但我发现如果有异常它不起作用。

我做了一个简单的例子来重现这个问题。我有一个只有一个名为“Tabella”的表的数据库,该表有两个字段:“ID”是自动生成的整数,“Valore”是具有唯一约束的整数。然后我尝试运行这段代码:

现在,如果我查看数据库,它应该不包含任何记录,因为事务应该回滚,而是找到两条记录!!!!一个 Valore=1,一个 Valore=2。我错过了什么?看起来对 SaveChanges 方法的第二次调用回滚了它自己的更改并“删除”了事务,然后对 SaveChanges 的第三次调用提交了第一次和第三次插入的更改(此时就像事务不存在一样)。

我也尝试使用 SaveChanges(false) 方法(即使没有调用 AcceptAllChanges 方法),但没有成功:我有同样的行为。

我不希望 SaveChanges 自动回滚事务,因为我想更正错误(例如通过 catch 语句中的用户交互)并重试。

有人可以帮我弄这个吗?这似乎是一个“错误”,它让我非常头疼......

0 投票
1 回答
541 浏览

sql - 使用 System.Data.SqlClient 在 Ironpython 中回滚

我无法使用以下代码片段回滚,需要帮助:

谢谢!

我现在明白了,但是现在我遇到了一个问题,它需要一个字符串,但是如果我将 SQL 查询字符串作为参数放入,我就无法执行参数化值:

0 投票
1 回答
114 浏览

sql - 在多用户环境中处理数据编辑的回滚?

在多用户环境中,您通常如何处理数据编辑的回滚?您是否识别交易并构建任何后续相关交易的图表,然后将它们全部回滚?大多数 RDBMS 是否提供接口或机制来执行此类操作?

虽然我很天真,但我考虑过从备份中恢复,但后来我意识到这将恢复潜在数十个用户对不相关记录所做的更改。在编辑/备份的时间和当前时间之间。

0 投票
1 回答
9685 浏览

tsql - “ROLLBACK TRANSACTION named_transaction”有什么意义?

我已经阅读了 MSDN 关于ROLLBACK TRANSACTION嵌套事务。虽然我看到了点ROLLBACK TRANSACTION savepointname,但我不明白ROLLBACK TRANSACTION transactionname

  1. 它仅transactionname在最外层事务时才有效
  2. ROLLBACK总是回滚整个事务“堆栈”,除非是savepointname

基本上,当我阅读文档时,除了保存点之外,ROLLBACK都会回滚所有事务(到@@TRANCOUNT=0)。我能看到的唯一区别是这个片段:

如果在一组嵌套事务的任何级别执行使用外部事务名称的 ROLLBACK TRANSACTION transaction_name 语句,则所有嵌套事务都将回滚。如果在一组嵌套事务的任何级别执行不带 transaction_name 参数的 ROLLBACK WORK 或 ROLLBACK TRANSACTION 语句,它将回滚所有嵌套事务,包括最外层事务。

从阅读中,这向我表明回滚命名事务(必须是最外层事务的名称),只有嵌套事务将被回滚。这将为回滚命名事务提供一些意义。所以我设置了一个测试:

导致(所有“受影响的 X 行”内容被删除)

请注意,当我更改时,输出没有区别

简单地

那么有什么意义呢?ROLLBACK TRANSACTION named_transaction

0 投票
2 回答
235 浏览

git - 我如何从我的“公共”git 服务器中拉出我损坏的本地“主”以更新?

我有一点困境。基本上我有一个本地的“主”git 存储库。每隔几个小时,我将我的更改“git push”到服务器,然后从服务器拉到我的客户端机器。好吧,作为天才,我不小心使用 GITK 将我的本地“主”存储库回滚了一个版本。

从服务器拉回最后提交的版本并仍然让我的本地版本表现得“熟练”的步骤是什么?

最好的。

编辑:很好的答案。非常感激!

0 投票
4 回答
783 浏览

c# - C#中对象的事务

我想知道是否有办法对对象进行交易。我问这个问题是针对以下情况:

我们将对象传递给我们的数据访问层。在那里,我们使用 transactionscope 来确保数据库不会损坏。

在该过程中,可以更改对象(datechanged、所有者等...)。但是,如果事务失败,事务范围会回滚数据库中的事务,但不会回滚对象上的事务。

这样你的对象(通过引用传递)有点损坏。

我希望有一个解决方案。