PostgreSql INSERT FROM SELECT RETURNING ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSql INSERT FROM SELECT RETURNING ID相关的知识,希望对你有一定的参考价值。

在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查询来实现此功能吗?

答案

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

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

但是:ぁzxswい

以上是关于PostgreSql INSERT FROM SELECT RETURNING ID的主要内容,如果未能解决你的问题,请参考以下文章

“INSERT INTO ... FETCH ALL FROM ...”无法编译

Postgresql中无则插入的使用方法INSERT INTO WHERE NOT EXISTS

PostgreSQL数据库 学习笔记

postgresql----INSERT

mysql_insert_id 替代 postgresql

获取 PostgreSQL 中受 INSERT 或 UPDATE 影响的记录数