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
musthave 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@Yahoo.com #
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com