Coldfusion 使用cftransaction不会回滚条目
我正在使用cftransaction标记,当出现错误时,它不会回滚条目,我不确定出了什么问题,我还没有使用cftransaction的嵌套部分,简单的部分不起作用,我不确定嵌套在这里的行为如何,如果错误,请更正我的代码Coldfusion 使用cftransaction不会回滚条目,coldfusion,coldfusion-10,Coldfusion,Coldfusion 10,我正在使用cftransaction标记,当出现错误时,它不会回滚条目,我不确定出了什么问题,我还没有使用cftransaction的嵌套部分,简单的部分不起作用,我不确定嵌套在这里的行为如何,如果错误,请更正我的代码 <cffunction access="public" name="newRegistration" returntype="any"> <cfargument name="structform" default="" required="no" typ
<cffunction access="public" name="newRegistration" returntype="any">
<cfargument name="structform" default="" required="no" type="struct">
<cfset var newregis = "">
<cfset var str = "">
<cfset var msg = "">
<cftry>
<cftransaction action="begin"/>
<cfquery name="newregis" result="lastGenerated">
--- Insert Goes Here ---
</cfquery>
<cfset rsLastID = lastGenerated.generated_key>
<cfif isDefined('arguments.structform.mailoption') AND arguments.structform.mailoption EQ 'Yes'>
<cfset msg = createAccountEmail(rsLastID,'nar')>
</cfif>
<cftransaction action="commit"/>
<cfset str = "Account Created Successfully. #msg#">
<cfcatch type="any">
<cftransaction action="rollback"/>
<cfset str = "Error! #cfcatch.Detail# #cfcatch.Message#. Entry rolled back, try again">
</cfcatch>
</cftry>
<cfreturn str>
</cffunction>
---插入到这里---
您似乎缺少应该包装在try/catch块周围的closing CFTRANSACTION标记
<cftransaction action="begin">
<cftry>
...
<cfcatch type="any">
<cftransaction action="rollback" />
...
</cfcatch>
</cftry>
</cftransaction>
...
...
使用这种结构,你应该很好。将此
读作
触发cfcatch块的错误是什么?另外,关于你的评论,如果你的问题有错误,为什么不编辑它呢?哎呀!我错了,我没有编辑,我现在已经编辑了。我让它在插入后失败了,但它没有回滚。您的结束在哪里?像这样,我不认为它可以嵌套在cftry
,可能需要(减去
中的结束/
)。但是你是对的,不正确的标记结构是导致问题的原因。好的,这里发现了一个条目,它与我的条目几乎相同,因为唯一的事情是主cftransaction=“begin”在cftry bloack之外,并且在cftry之后关闭。哈哈,这与前面链接中提到的结构完全相同!你只需要插入你的代码。。。