【问题标题】:PostgreSql INSERT FROM SELECT RETURNING IDPostgreSql 从选择返回 ID 插入
【发布时间】:2013-10-10 15:11:28
【问题描述】:

在 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');

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

【问题讨论】:

  • 不要以纯文本形式存储用户密码!

标签: sql postgresql insert postgresql-9.2


【解决方案1】:

您只需将RETURNING id 添加到您的INSERT ... SELECT

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 正是我需要的谢谢
    猜你喜欢
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多