Thread: Why table has drop, but the foreign key still there?
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!
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).
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
> 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.