Re: REFERENCES constraint

From: Jan Wieck <JanWieck(at)Yahoo(dot)com>
To: Josh Berkus <josh(at)agliodbs(dot)com>
Cc: Cedar Cox <cedarc(at)visionforisrael(dot)com>, pgsql-sql(at)postgresql(dot)org
Subject: Re: REFERENCES constraint
Date: 2001-08-08 17:50:52
Message-ID: 200108081750.f78HoqJ11933@jupiter.us.greatbridge.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Josh Berkus wrote:
> Cedar,
>
> > 1. Can a column reference more than one table? (This assumes you use
> > a
> > single sequence to generate the IDs for both "tbla" and "tblb". I
> > guess
> > you would also have the problem of enforcing a unique index. Say
> > what?!
> > A unique index across multiple tables.. absurd :) eg..
> >
> > CREATE TABLE blah (
> > id int4,
> > f_id int4 REFERENCES tbla (id) REFERENCES tblb (id)
> > )
>
> I'd reccomend, instead, having blah reference tbla and tbla reference
> tblb. It'd have the same effect, without forcing you to monkey around
> with custom triggers.

Nobody said that primary keys are limited to the serial
datatype. So in case that tbla and tblb could have different
sets of keys with a possible intersection, and further given
that blah.f_id shall be limited to values both have in
common, there's no other way than having multiple foreign key
constraints on that one column.

Thus, it is possible. I'm not sure if the above syntax is
supported, but at least you can put table level CONSTRAINT
clauses into the statement and/or add the constraints later
with ALTER TABLE.

>
> > 2. Can a column reference another column in the same table? eg..
> >
> > CREATE TABLE bloo (
> > id int4,
> > p_id int4 REFERENCES bloo (id)
> > -- or
> > --p_id int4 REFERENCES (id)
> > )
>
> Er ... why would you want to?

To build a tree structure of nodes. Root nodes have p_id
(meaning parent-id I guess) set to NULL, all others must have
an existing node as parent. Together with ON DELETE CASCADE
it'd build an expert-directory-structure (experts usually
have "alias rm='/bin/rm -rf'" in their .profile, you know).

Again, since it makes sense it is possible.

Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck(at)Yahoo(dot)com #

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Stephan Szabo 2001-08-08 18:14:08 Re: REFERENCES constraint
Previous Message Tom Lane 2001-08-08 17:26:47 Re: Problem with aggregate functions and GROUP BY