Se non commit
non rollback
una transazione aperta e non è commited
ovunque più avanti nel tuo script, non sarà commited
(visto dal motore di database) e verrà automaticamente ripristinato alla fine dello script.
Comunque, io (beh, quasi) sempre commit
o rollback
esplicitamente le transazioni che apro, quindi :
- Non c'è il rischio di un errore (come commettere "per errore" più avanti nello script)
- Il codice è più facile da leggere/comprendere :quando si vede
$db->rollback()
, sa che voglio di sicuro il rollback della transazione e non deve pensare "voleva davvero eseguire il rollback o ha dimenticato qualcosa? e che dire più avanti nella sceneggiatura? "
Il motore DB non "vede" la PDOException:viene generata da PHP in varie condizioni, ma il database non esegue il rollback di nulla da solo:
- o viene eseguita una transazione
- o viene eseguito il rollback
- oppure non è stato eseguito il commit o il rollback in modo esplicito, il che significa che non è stato eseguito il commit, il che significa che ciò che è stato modificato non è "realmente" modificato