Mysql
 sql >> Database >  >> RDS >> Mysql

PDO Query multiple:transazione di commit e rollback

Sì, il tuo approccio è corretto. Usando Try...catch può portare a un codice più pulito e leggibile in alcuni casi, ma il tuo approccio generale va bene.

Se il tuo frammento di codice proviene da una funzione che gestisce le query DB e non molto altro, probabilmente cambierei l'approccio:

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

Ovviamente, se hai bisogno di un sacco di pulizia da fare prima di poter return , allora il tuo approccio originale è migliore. Soprattutto in questi casi valuterei l'utilizzo di PDO::ERRMODE_EXCEPTION. Ciò ha alcuni vantaggi aggiuntivi, come le eccezioni che annullano automaticamente la transazione a meno che non vengano rilevate.