sql >> Base de Datos >  >> RDS >> Mysql

Consultas múltiples de PDO:transacción de compromiso y reversión

Sí, su enfoque es correcto. Usando Try...catch puede conducir a un código más limpio y legible en algunos casos, pero su enfoque general está bien.

Si su fragmento de código es de una función que maneja consultas de base de datos y no mucho más, probablemente cambiaría el enfoque:

// 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();

Por supuesto, si necesita hacer mucha limpieza antes de que pueda return , entonces su enfoque original es mejor. Especialmente en estos casos, consideraría usar PDO::ERRMODE_EXCEPTION. Esto tiene algunos beneficios adicionales, como excepciones que revierten automáticamente la transacción a menos que se detecten.