Wenn Sie sich nicht commit
kein rollback
eine geöffnete Transaktion, und sie ist nicht commited
Irgendwo später in Ihrem Skript wird es nicht commited
(wie von der Datenbank-Engine gesehen) , und wird am Ende Ihres Skripts automatisch zurückgesetzt.
Trotzdem, ich (naja, fast) immer commit
oder rollback
explizit die Transaktionen, die ich öffne, also :
- Es besteht kein Risiko eines Fehlers (wie ein "versehentliches" Commit später im Skript)
- Der Code ist einfacher zu lesen / zu verstehen :wenn man
$db->rollback()
sieht , er weiß, dass ich die Transaktion auf jeden Fall rückgängig machen möchte, und er muss nicht denken:„wollte er wirklich zurücksetzen, oder hat er etwas vergessen? und was ist später im Skript? "
Die DB-Engine "sieht" die PDOException nicht:Sie wird von PHP unter verschiedenen Bedingungen geworfen -- aber die Datenbank setzt selbst nichts zurück:
- entweder wird eine Transaktion festgeschrieben
- oder es wird zurückgesetzt
- oder es wurde weder explizit festgeschrieben noch rückgängig gemacht – was bedeutet, dass es nicht festgeschrieben wurde – was bedeutet, dass das, was geändert wurde, nicht „wirklich“ geändert wurde