从PostgreSQL中的触发器返回错误消息

从PostgreSQL中的触发器返回错误消息,postgresql,exception-handling,triggers,postgresql-8.4,Postgresql,Exception Handling,Triggers,Postgresql 8.4,我想对插入到表中的数据执行一些业务验证,并且在执行此操作时需要检查另一个表中的数据。实现这一点的方法似乎是在PostgreSQL中为每一行使用插入前触发器,如果新数据验证失败,我可以从它调用的函数中返回NULL,以防止插入 是否有任何方法可以返回描述验证错误的错误消息?用于异常: 39.8。错误和消息 使用RAISE语句报告消息并引发错误。 […] 异常引发错误(通常会中止当前事务) 所以你可以在你的触发器里这样说: raise exception 'Say something useful a

我想对插入到表中的数据执行一些业务验证,并且在执行此操作时需要检查另一个表中的数据。实现这一点的方法似乎是在PostgreSQL中为每一行使用
插入前触发器
,如果新数据验证失败,我可以从它调用的函数中返回NULL,以防止插入

是否有任何方法可以返回描述验证错误的错误消息?

用于异常:

39.8。错误和消息

使用
RAISE
语句报告消息并引发错误。
[…]
异常
引发错误(通常会中止当前事务)

所以你可以在你的触发器里这样说:

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

这将中止触发器和(通常)当前事务。您发出的消息应该返回到客户端应用程序。

除了@mu的答案之外,如果您想为自己的异常创建上下文,请注意,如果出现异常,您不能在触发器中使用NOTIFY