首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CFTransaction、CFThrow和CFDump回滚

使用CFTransaction、CFThrow和CFDump回滚
EN

Stack Overflow用户
提问于 2018-04-02 18:18:06
回答 1查看 648关注 0票数 2

我读过关于cftransaction事务的文档,但不知道用<cfdump var="#myVar#" abort><cftransaction action="rollback" /><cfthrow message="Error">回滚的区别

例如,假设var a是预设的。cftransaction标记中的所有查询在使用cfdump abort时只执行回滚操作。使用适当的rollback actioncfthrow标记,它们不会回滚。

我是CF2016的新手。有人能给我解释一下一个或另一个回滚之间的区别吗?

代码语言:javascript
复制
<cftransaction action="begin">
  ...somecode with querys...
  <cfif a eq 1>
    <cftransaction action="rollback" />
  <cfelseif a eq 2>
    <cfthrow message="Error">
  <cfelse>
    <cfdump var="Error" abort>
  </cfif>
</cftransaction>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-02 19:16:15

在执行回滚操作之前尝试设置一个保存点.我不能100%确定您是否需要在实际回滚之前显式地设置

因为<cfabort>停止了对页面的处理,所以在<cftransaction>标记中进行的所有查询都会被反转,而不管保存点是什么,而使用<cftransaction action="rollback" />,您可以将其重置到查询集中的一个特定点。

例如,请考虑以下流程

代码语言:javascript
复制
<cftransaction> 
 <Query 1 > 
 <Query 2 > 
 <cftransaction action = "setsavepoint" savepoint = "#point#"/> 
  <Query 3 > 
 </cftransaction>

如果查询3在<cftransaction action="rollback" savepoint="#point#" />中失败,您可以回滚到不必重做<Query 1 > <Query 2 >,只需担心<Query 3 >不重复这些查询就可以节省一些开销。在CFDUMP中使用CFABORT将中止整个事务

此页上的最后一个撤回示例显示了保存点https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-tags/tags-t/cftransaction.html的使用情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49616527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档