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

PHP-, MySQL-, PDO-Transaktionen - Stoppt der Code im try-Block bei commit()?

Wenn die Transaktion aus irgendeinem Grund fehlschlägt, stoppt der Code genau in der Zeile, in der der Fehler aufgetreten ist end springt die Ausführung direkt zum catch-Block. Es reicht also aus, wie Sie es in Code Block 2 geschrieben haben.

Beachten Sie, dass Sie die Ausnahme nach dem Rollback immer erneut auslösen sollten. Sonst werden Sie nie eine Ahnung haben, was ein Problem war. So sollte es sein

try{
    $stmt = $db->prepare(... 1 ...);
    $stmt->execute();

    $stmt = $db->prepare(... 2 ...);
    $stmt->execute();

    $stmt = $db->prepare(... 3 ...);
    $stmt->execute();

    $db->commit();

    return true;
}catch(Exception $e){
    $db->rollBack();
    throw $e;
}