25P02: in_failed_sql_transaction
PostgreSQL¿Qué significa?
Ya se produjo un error anteriormente en la transacción; no pueden ejecutarse más comandos en ella. La transacción está en estado abortado y solo se acepta ROLLBACK.
¿Por qué ocurre?
Una sentencia anterior de un bloque de transacción falló (p. ej., una violación de restricción) y aun así se siguen enviando comandos nuevos en la misma transacción. La aplicación no captura el error y continúa con la transacción.
Cómo solucionarlo
Revierta la transacción: ROLLBACK, y vuelva a iniciarla. Si quiere aislar el error de un bloque y continuar, use SAVEPOINT y vuelva a ese punto con ROLLBACK TO SAVEPOINT. En la aplicación, capture el error de cada sentencia y gestione la transacción correctamente (haga explícita la decisión de commit/rollback).