PostgreSql INSERT FROM SELECT RETURNING ID

Nai*_*gun 48 sql postgresql insert postgresql-9.2

在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');
Run Code Online (Sandbox Code Playgroud)

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

mu *_*ort 72

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

WITH rows AS (...)
INSERT INTO dealer (user_id)
    SELECT id
    FROM rows
    RETURNING id;
Run Code Online (Sandbox Code Playgroud)

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


小智 22

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

INSERT INTO dealer (user_id)
    SELECT id
    FROM rows
    RETURNING id INTO l_dealerid;
Run Code Online (Sandbox Code Playgroud)