Re: primary/foreigner keys

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Luis Miguel Campos <lcampos(at)ics(dot)uci(dot)edu>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: primary/foreigner keys
Date: 2001-11-23 18:38:33
Message-ID: 20011123103517.I84165-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On 21 Nov 2001, Luis Miguel Campos wrote:

> Hi,
> I am trying to do the following:
> CREATE TABLE Customer (
> customer_id SERIAL PRIMARY KEY;
> account_id INTEGER UNIQUE REFERENCES Account DEFERRABLE);
>
> CREATE TABLE Account (
> account_id SERIAL PRIMARY KEY,
> customer_leader_id INTEGER UNIQUE REFERENCES Customer DEFERRABLE);
>
> Description:
> I am trying to create two tables where several customers can belong to
> an account and each account has a customer leader.
> This involves having each tables primary keys to be the foreigner key
> in the other table. (other solutions are welcome)
>
> Problem:
> First I can not create either table because the other is not known.
> I tried even within a BEGIN; table creation; commit;

Yep, you need to create the first one without the constraint, then
the second with its constraint and use ALTER TABLE ADD CONSTRAINT
to add the constraint to the first table.

> Secondly If I succeed how do I INSERT values into the tables?

I don't think deferrable implies initially deferred, so you probably
want to add initially deferred to the constraint. Otherwise the
constraint runs immediate mode unless you explicitly defer it which
is probably not what you're looking for. Then you need to
make sure the inserts are wrapped in a transaction. The constraint
should only be checked at commit time.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Andrew G. Hammond 2001-11-24 09:39:01 Re: Question
Previous Message MindTerm 2001-11-23 16:27:42 Re: How to return more than one row of data from a