| From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
|---|---|
| To: | Eugene Losowski-Gallagher <eugene(dot)losowskigallagher(at)googlemail(dot)com> |
| Cc: | pgsql-docs(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Constraint check is missing value check ARRAY |
| Date: | 2026-09-14 08:00:51 |
| Message-ID: | 4356f688f90839de940af344e6ba84851572b417.camel@cybertec.at |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-docs |
On Mon, 2026-09-14 at 07:45 +0100, Eugene Losowski-Gallagher wrote:
> As far as I can tell:
> https://www.postgresql.org/docs/current/ddl-constraints.html
> Has nothing on a check array constraint, or an oracle example for previous "CHECK usage IN ('M', 'H', 'W', 'F')"
> I.e this is an enum of values:
>
> CHECK (usage = ANY (ARRAY['M'::character(1),'H'::character(1),'W'::character(1),'F'::character(1)])) NOT VALID
>
> Please can it be added into the documentation, or a URL given by return that contains it.
> I have been unable to find any in recent documentation. I am pretty sure it existed in old documentation, or I reverse engineered it from pgAdmin software.
> I would be very useful to have it documented properly.
>
> That URL above includes all the other value constraints (against comparator const, against comparator variable, unique and foreign key), but nothing for a fixed limited set of equals values.
>
> In the above example I provided it is needed as not all letters are valid.
> Another example would be "displayed = Y, N"
>
> Postgres is a little more finicky than oracle, but the feature exists, and works nicely, just with awkward syntax.
> All I am asking is the documentation to include it.
There is no special "check array constraint", so there is no point in documenting it.
The following syntax works fine with PostgreSQL:
CHECK (usage IN ('M', 'H', 'W', 'F'))
True, your alternative spelling works just as well, but there is nothing
mysterious about it:
- <operator> ANY is documented in [1]
- the ARRAY[] constructor syntax is documented in [2]
- the proprietary type cast syntax using :: is documented in [3]
There is no special check constraint syntax in play that would need
additional documentation.
Yours,
Laurenz Albe
[1]: https://www.postgresql.org/docs/current/functions-subquery.html#FUNCTIONS-SUBQUERY-ANY-SOME
[2]: https://www.postgresql.org/docs/current/arrays.html#ARRAYS-INPUT
[3]: https://www.postgresql.org/docs/current/sql-expressions.html#SQL-SYNTAX-TYPE-CASTS
| From | Date | Subject | |
|---|---|---|---|
| Next Message | PG Doc comments form | 2026-09-14 18:39:09 | Anonymous record member access |
| Previous Message | Eugene Losowski-Gallagher | 2026-09-14 06:45:28 | Re: Constraint check is missing value check ARRAY |