From: | Andreas <maps(dot)on(at)gmx(dot)net> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Need magic for inserting in 2 tables |
Date: | 2010-10-04 00:47:26 |
Message-ID: | 4CA9241E.9030709@gmx.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Am 04.10.2010 01:46, schrieb Scott Marlowe:
> On Sun, Oct 3, 2010 at 4:14 PM, Andreas<maps(dot)on(at)gmx(dot)net> wrote:
>> insert into staff ( company_fk, ..., department_fk )
>> select company_fk, ..., department_fk
>> from departments, companies, company_2_project AS c2p
>> where company_id = c2p.company_fk
>> and c2p.project_fk = 42
>> and department_id in ( 40, 50 );
>>
>> step 2 would be to link those new blank staff records to project 42 by
>> inserting a record into staff_2_project for every new staff_id.
>>
>> How can I find the new staff_ids while making sure I don't insert ids from
>> other sessions?
>> Is there an elegant way in SQL ?
> Use returning?
>
> insert into .....
> yada
> returning field1, field2, field3
It seams the inserts can't be chained? :(
The inner insert works when I run it separately but when I run the
chained inserts I get an syntax error.
How can a script use what RETURNING dumps out?
I tried a bit but got nowhere.
insert into staff_2_project ( staff_fk, project_fk )
insert into staff ( company_fk, ..., department_fk )
[...]
returning staff_id, 42 as project_fk;
and
insert into staff_2_project ( staff_fk, project_fk )
(
insert into staff ( company_fk, ..., department_fk )
[...]
returning staff_id, 42 as project_fk
) as s;
and
insert into staff_2_project ( staff_fk, project_fk )
select staff_id, project_fk from
(
insert into staff ( company_fk, ..., department_fk )
[...]
returning staff_id, 42 as project_fk
) as s;
From | Date | Subject | |
---|---|---|---|
Next Message | Scott Marlowe | 2010-10-04 00:58:13 | Re: Need magic for inserting in 2 tables |
Previous Message | Scott Marlowe | 2010-10-03 23:46:39 | Re: Need magic for inserting in 2 tables |