我对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">
我在更新最新表时出错来测试这个,我发现没有回滚:(
有解决方案吗? 提前谢谢你,
米歇尔
答案 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
这些例子并不像它们应该的那样清晰或完整,但如果你阅读了整个内容,它就会被覆盖。