Thread: Referential constraints in version 8

Referential constraints in version 8

From
Bob Smith
Date:
We have just finished upgrading Postgres from 7.2 to 8, and I must live
right or something because there was only one glitch.  When the dump
from 7.2 was restored into 8, some foreign key references which should
have been initially deferred had become non-deferrable.  I had to
re-define those references by dropping the corresponding triggers and
using ALTER TABLE to put them back as foreign key constraints, which
seems to have fixed the problem.  However, those references which I
re-defined now show up explicitly in the table descriptions as foreign
key constraints, and the corresponding triggers are not listed.  This
is great since it makes the table descriptions much more intelligible,
but my concern is that all the other references which I didn't
re-define still show as triggers and not as foreign key constraints.
Is this just a cosmetic issue with psql's table description, or is
there actually a functional difference?  Should I re-define all the
other foreign key constraints to be safe?

Thanks!

Bob Smith
Hammett & Edison, Inc.
bsmith@h-e.com


Re: Referential constraints in version 8

From
Alvaro Herrera
Date:
On Fri, Apr 15, 2005 at 12:31:28AM -0700, Bob Smith wrote:
> We have just finished upgrading Postgres from 7.2 to 8, and I must live
> right or something because there was only one glitch.  When the dump
> from 7.2 was restored into 8, some foreign key references which should
> have been initially deferred had become non-deferrable.  I had to
> re-define those references by dropping the corresponding triggers and
> using ALTER TABLE to put them back as foreign key constraints, which
> seems to have fixed the problem.  However, those references which I
> re-defined now show up explicitly in the table descriptions as foreign
> key constraints, and the corresponding triggers are not listed.  This
> is great since it makes the table descriptions much more intelligible,
> but my concern is that all the other references which I didn't
> re-define still show as triggers and not as foreign key constraints.
> Is this just a cosmetic issue with psql's table description, or is
> there actually a functional difference?  Should I re-define all the
> other foreign key constraints to be safe?

I suggest you run contrib/adddepend against that database.  It will try to
add the missing information to the system catalogs so that the FKs
appear as such and not triggers.

--
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"Uno puede defenderse de los ataques; contra los elogios se esta indefenso"

Re: Referential constraints in version 8

From
Tom Lane
Date:
Bob Smith <bsmith@h-e.com> writes:
> We have just finished upgrading Postgres from 7.2 to 8, and I must live
> right or something because there was only one glitch.  When the dump
> from 7.2 was restored into 8, some foreign key references which should
> have been initially deferred had become non-deferrable.  I had to
> re-define those references by dropping the corresponding triggers and
> using ALTER TABLE to put them back as foreign key constraints, which
> seems to have fixed the problem.  However, those references which I
> re-defined now show up explicitly in the table descriptions as foreign
> key constraints, and the corresponding triggers are not listed.  This
> is great since it makes the table descriptions much more intelligible,
> but my concern is that all the other references which I didn't
> re-define still show as triggers and not as foreign key constraints.
> Is this just a cosmetic issue with psql's table description, or is
> there actually a functional difference?  Should I re-define all the
> other foreign key constraints to be safe?

Yeah, you should --- if it shows as a trigger then the system hasn't
fully grokked it.  The contrib/adddepend script may help you.

            regards, tom lane