Re: ALTER RENAME and indexes
От | Stephan Szabo |
---|---|
Тема | Re: ALTER RENAME and indexes |
Дата | |
Msg-id | Pine.BSF.4.21.0110070400210.72409-100000@megazone23.bigpanda.com обсуждение исходный текст |
Ответ на | Re: ALTER RENAME and indexes (Brent Verner <brent@rcfile.org>) |
Ответы |
Re: ALTER RENAME and indexes
|
Список | pgsql-hackers |
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.
В списке pgsql-hackers по дате отправления: