sql >> Databáze >  >> RDS >> Mysql

PDO Vícenásobné dotazy:potvrzení a vrácení transakce

Ano, váš přístup je správný. Pomocí Try...catch může v některých případech vést k čistšímu a čitelnějšímu kódu, ale váš celkový přístup je v pořádku.

Pokud váš fragment kódu pochází z funkce, která zpracovává dotazy DB a nic jiného, ​​pravděpodobně bych změnil přístup:

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

Samozřejmě, pokud požadujete provést spoustu vyčištění, než se budete moci return , pak je váš původní přístup lepší. Zejména v těchto případech bych se podíval na použití PDO::ERRMODE_EXCEPTION. To má některé další výhody, jako jsou výjimky, které automaticky vrátí transakci zpět, pokud nejsou zachyceny.



  1. Porovnání dat uložených jako varchar

  2. Hibernujte OneToOne líné načítání a kaskádování

  3. Přidání pokročilejších funkcí, jako je správa kategorií a hlasování o vláknech a příspěvcích

  4. Jak zacházet s chybou u duplicitních záznamů?