Re: Adding Foreign Key constraints outside of table def.

Поиск
Список
Период
Сортировка
От Gregory Wood
Тема Re: Adding Foreign Key constraints outside of table def.
Дата
Msg-id 001f01c0fb30$d6757dc0$7889ffcc@comstock.com
обсуждение исходный текст
Ответ на Adding Foreign Key constraints outside of table def.  (Mike Haberman <mikeh@ncsa.uiuc.edu>)
Ответы Re: Adding Foreign Key constraints outside of table def.  (Mike Haberman <mikeh@ncsa.uiuc.edu>)
Список 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 по дате отправления:

Предыдущее
От: Lamar Owen
Дата:
Сообщение: Re: Re: Authentication
Следующее
От: Mike Haberman
Дата:
Сообщение: Re: Adding Foreign Key constraints outside of table def.