From: | Brent Verner <brent(at)rcfile(dot)org> |
---|---|
To: | Rod Taylor <rbt(at)zort(dot)ca> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: ALTER RENAME and indexes |
Date: | 2001-10-07 02:56:14 |
Message-ID: | 20011006225614.A13763@rcfile.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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.
cheers.
Brent
--
"Develop your talent, man, and leave the world something. Records are
really gifts from people. To think that an artist would love you enough
to share his music with anyone is a beautiful thing." -- Duane Allman
From | Date | Subject | |
---|---|---|---|
Next Message | Stephan Szabo | 2001-10-07 11:03:40 | Re: ALTER RENAME and indexes |
Previous Message | Brent Verner | 2001-10-07 01:58:33 | [patch] ALTER RENAME and indexes |