elegant way to fill a table with serial
| От | Ivan Sergio Borgonovo | 
|---|---|
| Тема | elegant way to fill a table with serial | 
| Дата | |
| Msg-id | 20071205195049.5aff010b@webthatworks.it обсуждение исходный текст | 
| Ответы | Re: elegant way to fill a table with serial | 
| Список | pgsql-general | 
I've to fill something like:
create table DESTtable1 (
  pk1 serial primary key,
--  rest of stuff
);
create table DESTtable2 (
  pk2 serial primary key,
  fk1 int references DESTtable1(pk1)
-- rest of stuff
);
from data that are such way
create table SRCtable1 (
  pk1 serial primary key,
--  rest of stuff
);
create table SRCtable2 (
  fk1 int references DESTtable1(pk1)
  ak int not null,
-- rest of stuff
  unique(fk1,aa)
);
substantially (fk1,aa) -> pk2
the best way I thought is:
create table temp1 (
  pk2 serial primary key,
  fk1 int references DESTtable1(pk1),
  ak int not null
);
start transaction;
insert into temp1 (fk1,ak) select ....
insert into DESTtable2 (pk2,fk1,...)
  select (pk2,fk1...) from SRC2
  join temp1 ...
);
setval('....',currval('...'));
commit;
But it looks awful. I did it. It worked... but it is awful!
BTW I saw there is no OWNED BY in 8.1, is there any other way to
auto-drop sequences when columns get dropped?
--
Ivan Sergio Borgonovo
http://www.webthatworks.it
		
	В списке pgsql-general по дате отправления: