| 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
| 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 |