2

我在 ColdFusion 事务(ColdFusion 9、MySQL 5)中运行两个查询:

private boolean function updates()
{
    transaction
    {
        local.foo = new Query();
        local.foo.setSql("UPDATE foo SET bar = foo");
        local.foo.execute();

        local.bar = new Query();
        local.bar.setSql("UPDATE bar SET foo = bar");
        local.bar.execute();
    }

    if (both updates were successful)
    {
        return true;
    }
    else
    {
        return false;
    }
}

我想知道以下内容:我应该both updates where successfulif()with 中替换什么来测试查询是否正确执行?

4

1 回答 1

4

此解决方案吞下错误,并将其留给调用函数来检查和重新抛出它们。因此,我改变了你的回报值。它是一个带有布尔值和错误数组的结构。

local.result.bool = false;
local.result.error = ArrayNew(1);
TRANSACTION action="begin" 
{
 try{
    local.foo = new Query();
    local.foo.setSql("UPDATE foo SET bar = foo");
    local.foo.execute();
    local.bar = new Query();
    local.bar.setSql("UPDATE bar SET foo = bar");
    local.bar.execute();
 }
 catch(any excpt){
    ArrayAppend(local.result.error, excpt);
 }finally{
   if(ArrayLen(local.result.error) gt 0){
      transactionRollback();
    }else{
      local.result.bool = true; 
    }
 } 
}
return local.result;
于 2011-02-08T18:33:34.300 回答