Re: Sub Select inside Check ? - Mailing list pgsql-sql

From Stephan Szabo
Subject Re: Sub Select inside Check ?
Date
Msg-id 20030225074841.X57635-100000@megazone23.bigpanda.com
Whole thread Raw
In response to Sub Select inside Check ?  (Rudi Starcevic <rudi@oasis.net.au>)
List pgsql-sql
On Tue, 25 Feb 2003, Rudi Starcevic wrote:

> I'm trying to create this table with a Check that fails.
>
> I'm using 'Check' instead of 'References' due to poor db schema ( before
> me .. )
>
> Here is my error message:
> ERROR: cannot use subselect in CHECK constraint expression
>
> CREATE TABLE cp_retailers
> (
> ret_id serial PRIMARY KEY,
> ret_name varchar(120) NOT NULL,
> ret_address1 varchar(120),
> ret_address2 varchar(120),
> sub_id integer NOT NULL CHECK
>                             ( EXISTS
>                             ( SELECT sub_id FROM suburbs )
>                             )
> );
>
> I guess that say's it all - no sub select's in Check or am I on the
> wrong track ?

Unfortunately, that's not supported (it's non-trivial).  If you're
looking only for an insert/update on cp_retailers check (ie, suburbs
is unlikely to be updated/deleted from), you can do this by hiding
the subselect in a function and using that in the check.  If you
need both direction checks it gets rather complicated to do well, but
you can come fairly close using after triggers.




pgsql-sql by date:

Previous
From: "Victor Yegorov"
Date:
Subject: Relation "pg_relcheck"
Next
From: "Victor Yegorov"
Date:
Subject: Re: Relation "pg_relcheck"