elegant way to fill a table with serial

Поиск
Список
Период
Сортировка
От Ivan Sergio Borgonovo
Тема elegant way to fill a table with serial
Дата
Msg-id 20071205154405.5c147d7e@webthatworks.it
обсуждение исходный текст
Список 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


В списке pgsql-general по дате отправления:

Предыдущее
От: Przemyslaw Bojczuk
Дата:
Сообщение: Re: Problem with joining two tables
Следующее
От: Stephane Bortzmeyer
Дата:
Сообщение: Re: SQL Query