Re: [SQL] Verificate values in other table?

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: juman <juman(at)spray(dot)se>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: [SQL] Verificate values in other table?
Date: 1999-11-14 18:44:52
Message-ID: Pine.LNX.4.20.9911141936290.797-100000@peter-e.yi.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Btw., the term is "Referential integrity".

At some point there was something of that nature in the contrib dir but I
can't seem to find it now.

The usual way to solve this is to make a "rule" like so:

CREATE RULE check_for_junk AS ON insert TO table2
WHERE 0 = (SELECT COUNT(*) FROM table1 WHERE table1.ids = new.id)
DO INSTEAD NOTHING;

and a similar one for updates. Perhaps you also want one "ON delete TO
table1" to check for the reverse condition.

Proper foreign keys are slated to appear in 7.0.

On 1999-11-14, juman mentioned:

> I'm working on a little database and got stuck with the following problem. I
> have two tables that look like this
>
> table1 ( ids char(4) )
> table2 ( id char(4), comment text)
>
> What I want to do is that if someone adds or updates a row in in table2 I
> want to verify that the <id> given exists in table1. And if it doesn't don't
> accept the modification and give the user a error message. Is there some way
> to do this?
>
> / Fredrik
>
>
> ************
>
>

--
Peter Eisentraut Sernanders vaeg 10:115
peter_e(at)gmx(dot)net 75262 Uppsala
http://yi.org/peter-e/ Sweden

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Chaotic Inceptions 1999-11-14 21:03:04 Arrays of composites, bug or usage?
Previous Message juman 1999-11-14 10:25:29 Verificate values in other table?