如何自定义约束违规消息?

Pav*_*din 9 postgresql

我想为每个约束定义我自己的消息。是否可以在 PostgreSQL 中自定义约束违规消息?

ype*_*eᵀᴹ 12

这已在 Postgres 论坛中提出:Custom Constraint Violation Errors

经过一些讨论:

...
所以我说得对吗,如果我想获得例如外键违规的自定义错误消息,我需要用触发器函数替换所有 fkeys?!

迈克尔·穆森布洛克

在那里回答:

简短的回答是,虽然可以自定义制作自己的模拟外键的约束触发器,但不要这样做。这将是一个维护噩梦。

在您的客户端应用程序中捕获这些错误会更易于维护。在这里,您将根据客户端应用程序的业务规则改写这些错误消息。

小理查德·布罗斯马

我认为最有效的方法:

创建并不难:

CONSTRAINT some_constraint_name FOREIGN KEY col REFERENCES blah(id)
Run Code Online (Sandbox Code Playgroud)

...然后在应用程序中,匹配"some_constraint_name"并将其映射到合适的错误。这就是我所做的,它适用于所有约束类型,而不仅仅是外键约束。

——
克雷格·林格