cftransaction和cfincludes

时间:2011-11-29 10:25:42

标签: coldfusion transactions

我对cftransaction标签有疑问。 我有一个文件如下...让我们称之为act_update:

<cfif request.before>
    <cfinclude template="act_before.cfm">
</cfif>

<!--- Here I have a lot of thing to update the core table --->

<cfif request.after>
    <cfinclude template="act_after.cfm">
</cfif>

我可能不会触摸此文件,因为它也被其他应用程序使用,但我手上有两个包含... 在第一个包括(之前)我推杆:

<cftransaction action="begin" />

在第二个包含(之后)中,我推出了剩余的交易:

<cftry>
    <!--- Update here for another table --->
    <cfcatch>
        <cftransaction action="rollback" />
    </cfcatch>
</cftry>
<cftransaction action="commit">

我在更新最新表时出错来测试这个,我发现没有回滚:(

有解决方案吗? 提前谢谢你,

米歇尔

1 个答案:

答案 0 :(得分:4)

你无法做你想做的事。 CFTRANSACTION有两个不同的功能。

首先,为了使某些DB代码具有事务性,需要将其放在事务块中。这“包装”了事务性代码,例如:

<cftransaction>
    <!--- your DB code here --->
</cftransaction>

要做一些交易,需要做一件事。

一旦到位,就可以对事务执行操作,例如提交,回滚和设置保存点。但是,这些必须在主要的CFTRANSACTION块中。

您需要做的是在CFTRANSACTION标签中包含对act_update.cfm的调用,并在该级别执行事务控制。

这是,顺便说一下,所有文档都在:http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c6b.html

这些例子并不像它们应该的那样清晰或完整,但如果你阅读了整个内容,它就会被覆盖。