我读过关于cftransaction事务的文档,但不知道用<cfdump var="#myVar#" abort>、<cftransaction action="rollback" />或<cfthrow message="Error">回滚的区别
例如,假设var a是预设的。cftransaction标记中的所有查询在使用cfdump abort时只执行回滚操作。使用适当的rollback action或cfthrow标记,它们不会回滚。
我是CF2016的新手。有人能给我解释一下一个或另一个回滚之间的区别吗?
<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>发布于 2018-04-02 19:16:15
在执行回滚操作之前尝试设置一个保存点.我不能100%确定您是否需要在实际回滚之前显式地设置
因为<cfabort>停止了对页面的处理,所以在<cftransaction>标记中进行的所有查询都会被反转,而不管保存点是什么,而使用<cftransaction action="rollback" />,您可以将其重置到查询集中的一个特定点。
例如,请考虑以下流程
<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的使用情况。
https://stackoverflow.com/questions/49616527
复制相似问题