78

在 PostgreSql 9.2.4 我有两个表:user (id, login, password, name)dealer (id, user_id).

我想插入两个表,返回创建经销商的 id。

目前我正在使用两个查询:

WITH rows AS (
    INSERT INTO "user"
        (login, password, name)
    VALUES
        ('dealer1', 'jygbjybk', 'Dealer 1')
    RETURNING id
)
INSERT INTO dealer (user_id)
    SELECT id
    FROM rows;
SELECT currval('dealer_id_seq');

但是我可以使用语句通过单个INSERT查询来实现吗?RETURNING

4

2 回答 2

113

你只需要添加一个RETURNING id到你的INSERT ... SELECT

WITH rows AS (...)
INSERT INTO dealer (user_id)
    SELECT id
    FROM rows
    RETURNING id;

演示:http ://sqlfiddle.com/#!12/75008/1

于 2013-10-03T19:40:37.123 回答
4

出于我的目的,我需要它在一个变量中,所以我这样做了:

INSERT INTO dealer (user_id)
    SELECT id
    FROM rows
    RETURNING id INTO l_dealerid;
于 2021-06-09T16:44:02.387 回答