Re: Constraint check is missing value check ARRAY

From: Eugene Losowski-Gallagher <eugene(dot)losowskigallagher(at)googlemail(dot)com>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
Cc: pgsql-docs(at)lists(dot)postgresql(dot)org
Subject: Re: Constraint check is missing value check ARRAY
Date: 2026-09-14 06:45:28
Message-ID: CAEgMDsRkj9uoMqRCUOpL5bv8m-owcx1gmrDDgb_fAb-42LXhdg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-docs

Hi Laurenz,

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.

Many thanks

Eugene

On Sun, 13 Sept 2026 at 22:41, Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
wrote:

> On Fri, 2026-09-11 at 19:09 +0000, PG Doc comments form wrote:
> > This page is missing the value check array.
> > https://www.postgresql.org/docs/current/ddl-constraints.html
> >
> >
> > Example:
> > CREATE TABLE demo
> > (
> > id bigint NOT NULL DEFAULT nextval('seq_ttelephone_id'::regclass),
> > usage character(1) NOT NULL DEFAULT 'M',
> > CONSTRAINT ck_ttelephone_usage_1 CHECK (usage = ANY
> >
> (ARRAY['M'::character(1),'H'::character(1),'W'::character(1),'F'::character(1)]))
> > NOT VALID
> > )
> > );
> >
> > This is entirely missing from the documentation.
> >
> > Key thing to point out is the type cast must match:
> > e.g. character(1) for type of character(1) etc
>
> Which aspect of this requires more detailed documentation than already
> exists?
> Can you be more descriptive?
>
> Yours,
> Laurenz Albe
>

--

*Eugene Losowski-Gallagher*
*Mob: *07825160923

In response to

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Laurenz Albe 2026-09-14 08:00:51 Re: Constraint check is missing value check ARRAY
Previous Message Laurenz Albe 2026-09-13 21:41:40 Re: Constraint check is missing value check ARRAY