如何回滚已提交的事务?

Byr*_*ock 6 sql-server web-applications

我正在为Web应用程序上的漫长操作实现撤消按钮.由于撤消将在另一个请求中出现,我必须提交操作.

有没有办法在交易上发出提示,比如"也许回滚"?因此,在提交事务之后,如果需要,我仍然可以在其他进程中回滚.

否则,撤销功能将与撤消操作一样复杂.

这可能吗?其他想法欢迎!

小智 6

您可能需要考虑的另一个选项:如果用户可以"撤消"该操作,您可能希望实现一个'intent'表,您可以在其中存储挂起的操作.一旦完成应用程序流程,用户就需要接受或撤消操作,此时您可以运行挂起的事务并将其应用于您的数据库.

我们在我们的Web应用程序上有一个类似的系统,用户可以提交交易进行处理,并且在计划运行的那天下午5点取消它.我们将其存储在意图表中,并处理在每日截止时间之后安排的当天的任何交易.在您的情况下,在初始"冗长操作"之后,您将需要用户明确的"接受"或"撤消"操作,这样会稍微改变您的过程.

希望这可以帮助.


Dan*_*ani 4

这种情况下的想法是记录每个操作 - 一个在特殊日志中执行相反操作的计数器操作,当您需要回滚时,您实际上运行已记录的命令。

有些数据库具有闪回技术,您可以要求数据库回到某个日期和时间。但你需要了解它是如何工作的,并确保它只会影响你想要的数据而不是其他员工......

甲骨文闪回

我不认为 SQL Server 上有类似的技术,并且有一个 SO 答案说没有,但 SQL 不断发展......