25P02: in_failed_sql_transaction
PostgreSQL의미
트랜잭션 앞부분에서 이미 오류가 발생해 더 이상 명령을 실행할 수 없다. 트랜잭션이 aborted 상태이며 ROLLBACK만 허용된다.
원인
트랜잭션 블록의 이전 문장이 실패했는데(예: 제약 조건 위반) 같은 트랜잭션에 새 명령을 계속 보냄. 애플리케이션이 오류를 잡지 않고 트랜잭션을 계속 진행함.
해결 방법
트랜잭션을 롤백한다: ROLLBACK 후 다시 시작한다. 블록의 오류를 격리하고 계속 진행하려면 SAVEPOINT를 사용하고 ROLLBACK TO SAVEPOINT로 해당 지점으로 돌아간다. 애플리케이션에서는 각 문장의 오류를 잡고 트랜잭션을 올바르게 관리한다(commit/rollback 결정을 명시적으로).