Si no commit
no rollback
una transacción abierta y no está commited
en cualquier parte posterior de su secuencia de comandos, no se commited
(como lo ve el motor de la base de datos) y se retrotraerá automáticamente al final de la secuencia de comandos.
Aún así, (bueno, casi) siempre commit
o rollback
explícitamente las transacciones que abro, entonces:
- No hay riesgo de error (como cometer "por error" más adelante en el guión)
- El código es más fácil de leer/comprender :cuando uno ve
$db->rollback()
, él sabe que quiero revertir la transacción con seguridad, y no tiene que pensar "¿realmente quería revertir, o se olvidó de algo? ¿Y qué pasa más adelante en el guión? "
El motor de base de datos no "ve" la excepción PDO:es lanzada por PHP bajo varias condiciones, pero la base de datos no revierte nada por sí misma:
- ya sea que se confirme una transacción
- o se revirtió
- o no está explícitamente confirmado ni revertido, lo que significa que no está confirmado, lo que significa que lo que se ha modificado no está "realmente" modificado