Thread: foreign key, create table, and transactions

foreign key, create table, and transactions

From
Jeffrey Green
Date:
> Hello.  I was wondering if anybody's run across the problem of 
> creating tables with foreign key constraints out of order.  What I 
> mean by this is that say I want a table called <pictures> that has a 
> foreign key reference to a table <people>.  If I define pictures 
> before table, I keep getting an error (Relation "people" doesn't 
> exist).  I tried to group them into a transaction with
>
> BEGIN;
> SET CONSTRAINTS ALL DEFERRED;
>
> CREATE TABLE pictures...
>
> CREATE TABLE people...
>
> COMMIT;
>
> But still no.  Is it a requirement of postgres that all creates 
> essentially be "in order" when there are foreign key constraints?  
> Please cc a response to jng15 at columbia dot edu.  Thanks so much.



Re: foreign key, create table, and transactions

From
Stephan Szabo
Date:
On Fri, 11 Oct 2002, Jeffrey Green wrote:

> > Hello.  I was wondering if anybody's run across the problem of
> > creating tables with foreign key constraints out of order.  What I
> > mean by this is that say I want a table called <pictures> that has a
> > foreign key reference to a table <people>.  If I define pictures
> > before table, I keep getting an error (Relation "people" doesn't
> > exist).  I tried to group them into a transaction with
> >
> > BEGIN;
> > SET CONSTRAINTS ALL DEFERRED;
> >
> > CREATE TABLE pictures...
> >
> > CREATE TABLE people...
> >
> > COMMIT;
> >
> > But still no.  Is it a requirement of postgres that all creates
> > essentially be "in order" when there are foreign key constraints?

Yes.  The check for the fact that the constraint is valid (as opposed to
the check that the data is valid) is immediate.  You can use alter table
add constraint to add the foreign key constraint after the second table
is created however.