From: | "Jonathan S(dot) Katz" <jonathan(dot)katz(at)excoventures(dot)com> |
---|---|
To: | Michael Schmidt <css(dot)liquid(at)gmail(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: How to script inserts where id is needed as fk |
Date: | 2013-11-08 19:48:57 |
Message-ID: | 05069440-C45F-4763-81A8-E14B5CB1CCB5@excoventures.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Nov 8, 2013, at 2:44 PM, Michael Schmidt wrote:
> Hi guys,
>
> i need to script some insert statements. To simplify it a little bit so assume i got a
>
> table "User" and a table called "Article". Both tables have an serial id column. In "Articles" there is a column i need to fill with the user id lets call it "create_user_id".
>
> I want to do something like:
>
> Insert into User (name) values ('User1');
>
> Insert into Article ('create_user_id') values (1);
> Insert into Article ('create_user_id') values (1);
>
> Insert into User (name) values ('User2');
>
> Insert into Article ('create_user_id') values (2);
> Insert into Article ('create_user_id') values (2);
>
> So you see i have set it to 1 and 2 this not good cause it might not be 1 and 2.
> I probably need the id returned by the "insert into User" query to use it for the "insert into Article" query.
If you are on PG 9.1 and above, you can use a writeable CTE to do this:
WITH users AS (
INSERT INTO User (name)
VALUES ('user1')
RETURNING id
)
INSERT INTO Article ('create_user_id')
SELECT id
FROM users;
Jonathan
From | Date | Subject | |
---|---|---|---|
Next Message | Sergey Konoplev | 2013-11-08 20:42:35 | Re: Query specific table using relative position in search path |
Previous Message | Michael Schmidt | 2013-11-08 19:44:42 | How to script inserts where id is needed as fk |