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

PDO Flere forespørgsler:commit og rollback transaktion

Ja, din tilgang er korrekt. Bruger Try...catch kan føre til renere og mere læsbar kode i nogle tilfælde, men din overordnede tilgang er fin.

Hvis dit kodefragment er fra en funktion, der håndterer DB-forespørgsler og ikke meget andet, ville jeg nok ændre tilgangen til:

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

Selvfølgelig, hvis du kræver en masse oprydning, før du kan return , så er din oprindelige tilgang bedre. Især i disse tilfælde ville jeg overveje at bruge PDO::ERRMODE_EXCEPTION. Dette har nogle yderligere fordele, såsom undtagelser, der automatisk ruller transaktionen tilbage, medmindre de bliver fanget.



  1. django karaktersæt med MySQL weirdness

  2. Laravel PDOException SQLSTATE[HY000] [1049] Ukendt database 'forge'

  3. Hvordan bruger man Oracle ORDER BY og ROWNUM korrekt?

  4. Hvordan skal jeg gemme GUID i MySQL-tabeller?