Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDO Várias consultas:transação de commit e rollback


Sim, sua abordagem está correta. Usando Try...catch pode levar a um código mais limpo e legível em alguns casos, mas sua abordagem geral é boa.

Se o seu fragmento de código for de uma função que lida com consultas de banco de dados e não muito mais, eu provavelmente mudaria a abordagem:
// Begin Transaction
$this->db->beginTransaction();

// Fire Queries
if(!$query_one->execute()){
    $this->db->rollback();
    // other clean-up goes here
    return;
}

if(!$query_two->execute()){
    $this->db->rollback();
    // other clean-up goes here
    return; 
}

$this->db->commit();

Claro, se você precisar fazer muita limpeza antes de poder return , então sua abordagem original é melhor. Especialmente nesses casos, eu gostaria de usar PDO::ERRMODE_EXCEPTION. Isso tem alguns benefícios adicionais, como exceções que revertem automaticamente a transação, a menos que sejam capturadas.