Si no commit
no rollback
una transacción abierta, y no es commited
en cualquier lugar más tarde en su guión, que no será commited
(como se ve por el motor de base de datos), y que volver enrollada automáticamente a el final de tu script
Aún así, (bueno, casi) siempre commit
o rollback
explícitamente las transacciones abro, por lo que:
- No hay riesgo de un error (como cometer "por error" más adelante en el guión)
- el código es más fácil de leer/entender: cuando uno ve
$db->rollback()
, él sabe que yo quiero la transacción enrollados a volver seguro, y no tener que pensar "mismo hizo verdadera Quiero retroceder, o se olvidó de algo? y qué hay más tarde en el guión? "
El motor de base de datos no 've' el PDOException: se tira por PHP bajo diversas condiciones - pero la base de datos no rollback nada por sí mismo:
- cualquiera una transacción se compromete
- o se rodó-back
- o que no está comprometida de manera explícita ni enrollada hacia atrás - lo que significa que no está comprometida - lo que significa que lo que se ha modificado no es "realmente" modificado
Creo que la transacción simplemente se detendrá en el nivel de la base de datos y luego caducará, pero debería ser una buena práctica 'rollback()' para guardar algunos recursos de db. –