Re: Adding Foreign Key constraints outside of table def. - Mailing list pgsql-general

From Gregory Wood
Subject Re: Adding Foreign Key constraints outside of table def.
Date
Msg-id 001f01c0fb30$d6757dc0$7889ffcc@comstock.com
Whole thread Raw
In response to Adding Foreign Key constraints outside of table def.  (Mike Haberman <mikeh@ncsa.uiuc.edu>)
Responses Re: Adding Foreign Key constraints outside of table def.  (Mike Haberman <mikeh@ncsa.uiuc.edu>)
List pgsql-general
>  1.  Is there a way to add it without worrying about the
>      syntax of "RI_FKey_..()"  e.g. (this would be nice if it worked)
>
>      ADD CONSTRAINT $fk.LocalColumnNames FOREIGN KEY
($fk.LocalColumnNames)
>      REFERENCES $fk.ForeignTableName ($fk.ForeignColumnNames)
>      ON DELETE set null, ON UPDATE cascade;

Here is how I added a foreign key to a table after the fact:

ALTER TABLE foo ADD FOREIGN KEY (bar) REFERENCES foo2 (bar2) ON DELETE SET
NULL;

Haven't actually tried within the ADD CONSTRAINST syntax.

>    2.... skipped

>    3. If I drop a table, how come the constainsts for that
>    table are NOT dropped as well?

I don't know about this one, I hope someone more knowledgable will step in.
I'm surprised if this is indeed the behavior.

>    4. for circular references,
>       Table A references B
>       B references C
>       C references A
>
>       is it impossible to do an insert  (assuming all the foreign key
>       constraints are set up) ?

You'll have to set up at least two of the constraints as INITIALLY DEFERRED,
then perform any inserts to all three tables inside of a transaction.

Greg


pgsql-general by date:

Previous
From: Lamar Owen
Date:
Subject: Re: Re: Authentication
Next
From: Mike Haberman
Date:
Subject: Re: Adding Foreign Key constraints outside of table def.