sql >> Base de Datos >  >> RDS >> Mysql

Si falla una transacción PHP PDO, ¿debo revertir () explícitamente?

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