On Sat, 6 Oct 2001, Brent Verner wrote:
> On 06 Oct 2001 at 20:13 (-0400), Rod Taylor wrote: > | Of course, in 7.1 foreign key constraints become rather confused when > | you rename columns on them. > | > | create table parent (id serial); > | create table child (id int4 references parent(id) on update cascade); > | alter table parent rename column id to anotherid; > | alter table child rename column id to junk; > | insert into child values (1); > | > | -> ERROR: constraint <unnamed>: table child does now have an > | attribute id > > ok, I see where this breaks. The args to the RI_ConstraintTrigger_%d > are written into the pg_trigger tuple like so.. > > '<unnamed>\000child\000parent\000UNSPECIFIED\000id\000id\000' > > There are really two approaches, AFAICS. > > 1) modify this tgargs value to reflect the modified column name(s). > 2) modify <whatever uses these args> to use the oid instead of > the column names, and modify CreateTrigger to reflect this change.. > > #2 seems to be the most bulletproof approach, so I'm looking > into hacking this up right now. Any comments would be much > appreciated about any (better) ways to fix this problem. #2 also requires changes to dump/restore stuff, since AFAIK it currently dumps create constraint trigger statements and the oids won't be known for the restore, but this is probably a good idea in general. ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster