Postgresql – How to customize constraint violation messages


I want define my own message for each constraint. Is it possible to customize constraint violation messages in PostgreSQL?

Best Answer

This has been asked in Postgres Forum: Custom Constraint Violation Errors

and after some discussion:

So am I got that right, that If I want to have eg custom error messages for a foreign key violation, I need to replace all fkeys by trigger functions?!

Michael Musenbrock

answered there:

The short answer is, while it is possible to custom make your own constraint triggers that emulate foreign keys, don't do it. This would be a maintenance nightmare.

I'd be more maintainable to catch these errors in your client application. Here you would reword these error messages according the business rules of your client application.

Richard Broersma Jr.

with what I think would work best:

It's not hard to create:

CONSTRAINT some_constraint_name FOREIGN KEY col REFERENCES blah(id)

... then in the app, match "some_constraint_name" and map it to a suitable error. That's what I do and it works very well for all constraint types, not just foreign key constraints.

Craig Ringer