From: | Ivan Sergio Borgonovo <mail(at)webthatworks(dot)it> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | elegant way to fill a table with serial |
Date: | 2007-12-05 14:44:05 |
Message-ID: | 20071205154405.5c147d7e@webthatworks.it |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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 about it is
create table temp1 (
pk2 serial primary key,
fk1 int references DESTtable1(pk1),
ak int not null
);
insert into temp1 (fk1,ak) select ....
insert into DESTtable2 (pk2,fk1,...)
select (pk2,fk1...) from SRC2
join temp1 ...
);
alter sequence seq_DESTtable2 RESTART currval('seq_temp1');
But it looks awful.
--
Ivan Sergio Borgonovo
http://www.webthatworks.it
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2007-12-05 15:25:06 | Re: Nested loop in simple query taking long time |
Previous Message | Tom Lane | 2007-12-05 14:39:29 | Re: Moving pgstat.stat and pgstat.tmp |