Thread: Why table has drop, but the foreign key still there?

Why table has drop, but the foreign key still there?

From
Raymond Chui
Date:
Here are the simple things I did

create table state (
state_code      char(2) not null,
state           varchar(15) not null,
primary key (state_code)
);

create table whitepage (
user_id char(8) not null,
email   varchar(50),
telephone       char(16) not null,
contact_name    varchar(30) not null,
city    varchar(20),
state_code      char(2),
primary key (user_id),
foreign key (state_code) references state (state_code)
);


insert into state (state_code,state) values ('GU','Guam');
drop table whitepage;
delete from state where state_code = 'GU';
ERROR:   Relation "whitepage" does not exist

Why I got this error message??!!
The whitepage table already drop. When the table drop, will the
foreign key constraint also drop??

Now, order for me delete a row from state table, I HAVE TO
re-create whitepage table. That's silly!!!

What shall I do? How do I delete a row in state without
re-create the whitepage table???

Thank you very much in advance!














Re: Why table has drop, but the foreign key still there?

From
Stephan Szabo
Date:
On Wed, 13 Aug 2003, Raymond Chui wrote:

>
> Here are the simple things I did
>
> create table state (
> state_code      char(2) not null,
> state           varchar(15) not null,
> primary key (state_code)
> );
>
> create table whitepage (
> user_id char(8) not null,
> email   varchar(50),
> telephone       char(16) not null,
> contact_name    varchar(30) not null,
> city    varchar(20),
> state_code      char(2),
> primary key (user_id),
> foreign key (state_code) references state (state_code)
> );
>
>
> insert into state (state_code,state) values ('GU','Guam');
> drop table whitepage;
> delete from state where state_code = 'GU';
> ERROR:   Relation "whitepage" does not exist

What version are you using?  I can't seem to replicate this given the
above on 7.2, 7.3 or 7.4.

If these tables were preexisting and had gone through a dump cycle
from 7.0 or 7.1, there was a bug in pg_dump for those versions that
would lose the connection between the triggers and the other table
of the constraint.

In any case, you'll need to find and drop the two orphaned triggers on
state (see techdocs for information on how to find them).


Re: Why table has drop, but the foreign key still there?

From
Tom Lane
Date:
Raymond Chui <raymond.chui@noaa.gov> writes:
> drop table whitepage;
> delete from state where state_code = 'GU';
> ERROR:   Relation "whitepage" does not exist

> Why I got this error message??!!

I could not duplicate this error.  What PG version are you running?

            regards, tom lane

Re: Why table has drop, but the foreign key still there?

From
Rod Taylor
Date:
> insert into state (state_code,state) values ('GU','Guam');
> drop table whitepage;
> delete from state where state_code = 'GU';
> ERROR:   Relation "whitepage" does not exist

Old version of PostgreSQL?  Effort went into cleaning up inter-object
dependencies in 7.3.  I don't recall having that particular issue in
versions prior either.

That said, you can remove the triggers that are on table "state"
beginning with the characters "RI".  psql -d state will tell you what
they are.

Attachment