sql >> Database >  >> RDS >> Mysql

PDO Meerdere zoekopdrachten:transactie vastleggen en terugdraaien

Ja, uw benadering is correct. Met behulp van Try...catch kan in sommige gevallen leiden tot schonere en beter leesbare code, maar uw algemene aanpak is prima.

Als uw codefragment afkomstig is van een functie die DB-query's afhandelt en niet veel anders, zou ik de aanpak waarschijnlijk omdraaien:

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

Natuurlijk, als je veel moet opruimen voordat je kunt return , dan is uw oorspronkelijke aanpak beter. Vooral in deze gevallen zou ik kijken naar het gebruik van PDO::ERRMODE_EXCEPTION. Dit heeft enkele extra voordelen, zoals uitzonderingen die de transactie automatisch terugdraaien, tenzij ze worden betrapt.



  1. BLOB-afbeelding lezen uit MySQL-database

  2. Andere db voor testen in Django?

  3. Psql een lijst van alle tabellen

  4. Ranking met miljoenen inzendingen