P0001: raise_exception
PostgreSQL의미
PL/pgSQL 함수나 트리거가 RAISE EXCEPTION으로 의도적으로 오류를 발생시켰다. 이 오류는 데이터베이스 엔진이 아니라 사용자(또는 라이브러리)가 작성한 비즈니스 규칙 코드에서 생성된다.
원인
비즈니스 로직의 검증이 실패하면 개발자가 RAISE EXCEPTION 'message' USING ERRCODE = ...;를 호출했다. 예를 들어 트리거가 허용되지 않는 갱신을 막거나 일관성 규칙을 적용하기 위해 사용자 정의 오류를 발생시킨다.
해결 방법
오류 메시지와 HINT/DETAIL 필드가 함수가 무엇을 거부했는지 설명하므로 그에 맞게 비즈니스 규칙을 충족시킨다. 원인을 찾으려면 관련 함수/트리거 코드(RAISE 문)를 확인한다. 특정 SQLSTATE가 필요하면 일반적인 P0001 대신 RAISE ... USING ERRCODE로 의미 있는 코드를 지정해 애플리케이션이 구분할 수 있게 한다.