3

テーブルに挿入されているデータのビジネス検証を実行したいのですが、その際に別のテーブルのデータをチェックする必要があります。これを行う方法はPostgreSQLでを使用しているようでBEFORE INSERT FOR EACH ROW TRIGGER、それが呼び出す関数から、新しいデータが挿入されないように検証に失敗した場合、NULLを返すことができます。

検証エラーを説明するエラーメッセージを返す方法はありますか?

4

1 に答える 1

8

raise例外に使用:

39.8。エラーとメッセージ

RAISEこのステートメントを使用して、メッセージを報告し、エラーを発生させます。
[...]
EXCEPTIONエラーが発生します(通常は現在のトランザクションを中止します)。

したがって、トリガーで次のように言うことができます。

raise exception 'Say something useful about %', some_variable;

これにより、トリガーと(通常は)現在のトランザクションが中止されます。発生したメッセージは、クライアントアプリケーションに戻る必要があります。

于 2012-06-07T04:30:28.237 に答える