On Wednesday, November 13, 2024, "Сергей П (SergeiDos)" <
podrezov.sergey@gmail.com> wrote:
Hello!
In the documentation for the Constraints section
https://www.postgresql.org/docs/current/ddl-constraints.html there is a phrase: "So, to specify a named constraint, use the key word CONSTRAINT followed by an identifier followed by the constraint definition. (If you can't specify a constraint name in this way, the system choose a name for you.)"
But nowhere in the documentation are the rules by which it generates names on its own described.
Correct. Which means the specific name chosen is an implementation detail that can change at any time and should not be relied upon by the DBA. It could be a randomly generated uuid for all it matters, but we do make some attempt to make it readable.
Since they are user-facing values I do see some benefit to defining what is being seen, though precisely how and to what purpose I am unsure. If you see a name it seems self-describing what it means if you have familiarity with relational databases. Telling a user what they will get when they execute SQL without specifying a name is not something I would want to document.
David J.