Wenn Sie nicht commit
nicht rollback
eine geöffnete Transaktion, und es ist nicht commited
überall später in Ihrem Skript, wird es nicht sein commited
(wie von der Datenbank-Engine zu sehen ist) und wird automatisch zurückgerollten an das Ende deines Skripts.
Aber ich (na ja, fast) immer commit
oder rollback
explizit die Transaktionen Ich öffne, so:
- Es nicht Risiko eines Fehlers ist (wie commiting "versehentlich" später in das Skript)
- der Code ist leicht zu lesen/verstehen: wenn man
$db->rollback()
sieht, er weiß, dass ich die Transaktion zurückgerollten sicher wollen, und er muss nicht denken, "er tat Echt Willst du zurückrollen, oder hat er etwas vergessen? und was ist später im Drehbuch? "
Der DB-Motor nicht‚die PDOException sehen‘: Es wird von PHP unter verschiedenen Bedingungen ausgelöst wird - aber die Datenbank-Rollback nicht alles von selbst:
- entweder eine Transaktion
- verpflichtet ist oder es zurückgerollten
- oder es ist nicht ausdrücklich verpflichtet, noch zurückgerollten - was es nicht verpflichtet bedeutet - was bedeutet, was geändert worden ist, ist nicht „wirklich“ modifizierte
Ich glaube, dass die Transaktion wird einfach auf Datenbankebene anhalten und dann ablaufen, aber es sollte eine gute Übung sein, 'Rollback()' einige DB-Ressourcen zu speichern. –