如何在coldfusion8中一个接一个地执行多个cfquery



如何一个接一个地执行多个cfquery。首先执行并完成第一个cfquery,然后继续执行下一个cfquery并转到另一个cfquery。以下所有cfquery都在一个页面中。

//--------first cfquery--------//
<cfquery name="first" datasource="test">
Delete from tab where id='123'
</cfquery>
//--------second cfquery--------//
<cfquery name="first" datasource="test">
insert into tab (id,name,age) values ('123','xxx','37')
</cfquery>
//--------Third cfquery--------//
<cfquery name="first" datasource="test">
select * from tab where id='123'
</cfquery>

查询随后在ColdFusion中执行。您的问题与并行执行多次的脚本有关。

并行执行脚本多次会导致并发问题。这意味着,查询同时从不同的脚本调用发送到数据库服务器,并且不能保证执行顺序。

为了避免这些并发问题,您应该做两件事。

  1. 将所有这些放在一个<cfquery>

    将它们全部放在一个<cfquery>中,查询将同时发送到服务器。这让数据库服务器负责执行它们。它按顺序执行它们。

    <cfquery name="query" datasource="test">
    delete from tab where id='123';
    insert into tab (id,name,age) values ('123','xxx','37');
    select * from tab where id='123';
    </cfquery>
    
  2. 将它们包裹在<cftransaction>

    将查询封装在<cftransaction>块中允许数据库引擎将所有查询作为单个事务执行。你可以想象;要么全有要么全无";行动
    此外,它还允许您捕捉错误,并在出现问题时恢复更改。

    <cftransaction>
    <cftry>
    //--------first cfquery--------//
    <cfquery name="first" datasource="test">
    Delete from tab where id='123'
    </cfquery>
    //--------second cfquery--------//
    <cfquery name="second" datasource="test">
    insert into tab (id,name,age) values ('123','xxx','37')
    </cfquery>
    //--------Third cfquery--------//
    <cfquery name="third" datasource="test">
    select * from tab where id='123'
    </cfquery>
    <cftransaction action="commit" />
    <cfcatch type="any">
    <cftransaction action="rollback" />
    </cfcatch>
    </cftransaction>
    

感谢大家抽出时间。。。非常感谢。好吧,我用两页纸解决了这个问题。。。。第一页执行删除操作,第二页执行插入操作。干杯

相关内容

  • 没有找到相关文章

最新更新