テーブルに挿入されているデータのビジネス検証を実行したいのですが、その際に別のテーブルのデータをチェックする必要があります。これを行う方法は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;
これにより、トリガーと(通常は)現在のトランザクションが中止されます。発生したメッセージは、クライアントアプリケーションに戻る必要があります。