テーブルに挿入されているデータのビジネス検証を実行したいのですが、その際に別のテーブルのデータをチェックする必要があります。これを行う方法はPostgreSQLでを使用しているようでBEFORE INSERT FOR EACH ROW TRIGGER、それが呼び出す関数から、新しいデータが挿入されないように検証に失敗した場合、NULLを返すことができます。
検証エラーを説明するエラーメッセージを返す方法はありますか?
テーブルに挿入されているデータのビジネス検証を実行したいのですが、その際に別のテーブルのデータをチェックする必要があります。これを行う方法はPostgreSQLでを使用しているようでBEFORE INSERT FOR EACH ROW TRIGGER、それが呼び出す関数から、新しいデータが挿入されないように検証に失敗した場合、NULLを返すことができます。
検証エラーを説明するエラーメッセージを返す方法はありますか?
raise例外に使用:
39.8。エラーとメッセージ
RAISEこのステートメントを使用して、メッセージを報告し、エラーを発生させます。
[...]
EXCEPTIONエラーが発生します(通常は現在のトランザクションを中止します)。
したがって、トリガーで次のように言うことができます。
raise exception 'Say something useful about %', some_variable;
これにより、トリガーと(通常は)現在のトランザクションが中止されます。発生したメッセージは、クライアントアプリケーションに戻る必要があります。