25P02: in_failed_sql_transaction
PostgreSQLO que significa?
Já ocorreu um erro anteriormente na transação; nenhum outro comando pode ser executado nela. A transação está no estado abortado e apenas ROLLBACK é aceito.
Por que acontece?
Uma instrução anterior em um bloco de transação falhou (por exemplo, uma violação de constraint) e novos comandos continuam sendo enviados na mesma transação mesmo assim. A aplicação não captura o erro e prossegue com a transação.
Como resolver
Faça rollback da transação: ROLLBACK, e então inicie-a novamente. Se quiser isolar o erro de um bloco e continuar, use SAVEPOINT e retorne a esse ponto com ROLLBACK TO SAVEPOINT. Na aplicação, capture o erro de cada instrução e gerencie a transação adequadamente (torne explícita a decisão de commit/rollback).