Se você não
commit não rollback uma transação aberta e não é commited em qualquer lugar mais tarde em seu script, ele não será commited (como visto pelo mecanismo de banco de dados) , e será revertido automaticamente no final do seu script. Ainda assim, eu (bem, quase) sempre
commit ou rollback explicitamente as transações que eu abro, então:- Não há risco de erro (como cometer "por engano" posteriormente no script)
- O código é mais fácil de ler/entender :quando se vê
$db->rollback(), ele sabe que eu quero a reversão da transação com certeza e ele não precisa pensar "ele realmente queria reverter ou esqueceu alguma coisa? e mais tarde no script? "
O mecanismo de banco de dados não "vê" a PDOException :ela é lançada pelo PHP sob várias condições -- mas o banco de dados não reverte nada por si só:
- uma transação é confirmada
- ou foi revertida
- ou não está explicitamente confirmado nem revertido -- o que significa que não está confirmado -- o que significa que o que foi modificado não está "realmente" modificado