PostgreSQL 插入操作,从选择语句返回 ID。

100
在PostgreSql 9.2.4中,我有两个表:user(id,login,password,name)dealer(id,user_id)
我想要插入这两个表并返回创建的dealer的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语句来实现这个呢?

2个回答

140

你只需要在你的INSERT ... SELECT语句中添加一个RETURNING id

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

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


18

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

INSERT INTO dealer (user_id)
    SELECT id
    FROM rows
    RETURNING id INTO l_dealerid;

正是我所需要的,谢谢。 - ennth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接