Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO Mehrere Abfragen:Commit- und Rollback-Transaktion

Ja, dein Ansatz ist richtig. Mit Try...catch kann in einigen Fällen zu einem saubereren und besser lesbaren Code führen, aber Ihr Gesamtansatz ist in Ordnung.

Wenn Ihr Codefragment von einer Funktion stammt, die DB-Abfragen und sonst nicht viel verarbeitet, würde ich wahrscheinlich den Ansatz umstellen:

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

Natürlich, wenn Sie viel aufräumen müssen, bevor Sie return können , dann ist Ihr ursprünglicher Ansatz besser. Besonders in diesen Fällen würde ich die Verwendung von PDO::ERRMODE_EXCEPTION prüfen. Dies hat einige zusätzliche Vorteile, wie z. B. Ausnahmen, die die Transaktion automatisch zurücksetzen, sofern sie nicht abgefangen werden.