P0001: raise_exception
PostgreSQL意味
PL/pgSQL の関数またはトリガーが RAISE EXCEPTION で意図的にエラーを発生させた。このエラーはデータベースエンジンではなく、利用者 (またはライブラリ) が記述した業務ルールのコードによって生成される。
原因
業務ロジックの検証が失敗した際に、開発者が RAISE EXCEPTION 'message' USING ERRCODE = ...; を呼び出した。例えば、トリガーが許可されない更新を阻止したり、整合性ルールを強制したりするためにカスタムエラーを発生させる。
対処方法
エラーメッセージと HINT/DETAIL フィールドが、関数が何を拒否したかを説明している。それに従って業務ルールを満たす。発生源を特定するには、該当する関数/トリガーのコード (RAISE 文) を調べる。特定の SQLSTATE が必要な場合は、汎用の P0001 ではなく RAISE ... USING ERRCODE で意味のあるコードを割り当て、アプリケーションが区別できるようにする。