Si ocurre un error, PostgreSQL en realidad no revierte la transacción. Falla todas las declaraciones posteriores con un error. Puede probar esto en el cliente.
Debe ejecutar la reversión antes de que cualquier declaración pueda ejecutarse con éxito.
En el caso de que cierre la conexión y comience una nueva, esto tiene poca importancia. Sin embargo, si conserva la conexión y ejecuta otras declaraciones que espera ejecutar con éxito, no funcionará.