Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Se uma transação PHP PDO falhar, devo reverter () explicitamente?


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