如何一个接一个地执行多个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中执行。您的问题与并行执行多次的脚本有关。
并行执行脚本多次会导致并发问题。这意味着,查询同时从不同的脚本调用发送到数据库服务器,并且不能保证执行顺序。
为了避免这些并发问题,您应该做两件事。
-
将所有这些放在一个
<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>
-
将它们包裹在
<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>
感谢大家抽出时间。。。非常感谢。好吧,我用两页纸解决了这个问题。。。。第一页执行删除操作,第二页执行插入操作。干杯