Miren, no estoy usando un die() en este ejemplo, pero lo que puedo asegurar es que la primer consulta si se ejecuta y la segunda no, porque se intenta hacer un UPDATE sobre un registro que no existe. Por que se graba la primer query?
Código PHP:
Ver originaltry
{
// Transaction
$sql = " UPDATE Commissions SET ";
$sql.= Fields
::makeUpdatePairsForDB($data, array('comm_state', 'state_id')); $sql.= " WHERE comm_id = '$comm_id'";
$result = $db->exec($sql);
if(!$result)
$error=1;
$sql = " UPDATE Payments SET ";
$sql.= $pay_field ;
$sql.= " WHERE pay_id = (SELECT pay_id FROM Commissions_Payments WHERE comm_id = $comm_id)";
$sql.= $pay_condition;
$result = $db->exec($sql);
if(!$result)
{
Messages::add("Esta comision no tiene un pago relacionado. Utilice la via habitual para generarlo.", 'error', 'Error');
$error=1;
}
if($error)
{
return false;
}
else
{
return true;
}
}
catch(Exception $e)
{
return false;
}
Aclaro que no se esta entrando en el boque catch, aun cuando elimino el return false de la seccion if($error).
nota: las tablas son InnoDB.