我已经看到了许多不同的cftransaction
示例,并阅读了不同的站点,但仍然无法找到确定cftransaction
哪些部分必要的明确答案。我要完成的工作非常简单:
开始交易
运行多个插入/更新
完成交易
如果在插入/更新期间的任何时间出现错误,我想回滚事务。这是我过去所做的:
<cftransaction>
<cftry>
<!--- multiple insert/update queries --->
<cfcatch type="any">
<cftransaction action="rollback">
<!--- log error, show user message --->
</cfcatch>
</cftry>
<cftransaction action="commit">
</cftransaction>
这样对吗?最佳做法是什么?并非所有
cftransaction
实例都遵循上述示例。有些仅具有开始和结束标签。我一直看到我的数据库服务器出现问题,并认为不当使用事务可能是问题之一。我在活动监视器中看到大量的
set transaction isolation level read committed
进程占用大量CPU。 最佳答案
在执行此操作时,“ commit”和“ rollback”行是多余的。只有在您希望提交某些查询而其他查询回滚时,它们才真正有用。由于您不做任何事情,所以您实际上不需要它们。
我通常这样做:
<cftry>
<cftransaction>
<!--- multiple insert/update queries --->
</cftransaction>
<cfcatch type="database">
<!--- log error, show user message --->
</cfcatch>
</cftry>