在Postgres中SELECT*FROM NEW TABLE等价物

Mic*_*ter 2 sql postgresql sql-insert

在DB2中,我可以执行一个看起来像这样的命令来从插入的行中检索信息:

SELECT *
FROM NEW TABLE (
    INSERT INTO phone_book
    VALUES ( 'Peter Doe','555-2323' )
) AS t
Run Code Online (Sandbox Code Playgroud)

我如何在Postgres中做到这一点?

有办法检索序列,但我需要检索任意列.

我希望将选择与插入合并是出于性能原因.这样我只需要执行一个语句来插入值并从插入中选择值.插入的值来自subselect而不是values子句.我只需要插入1行.

该示例代码取自维基百科插入文章

Erw*_*ter 6

平原INSERT ... RETURNING ...完成工作并提供最佳性能.
CTE不是必需的.

INSERT INTO phone_book (name, number)
VALUES ( 'Peter Doe','555-2323' )
RETURNING *  -- or just phonebook_id, if that's all you need
Run Code Online (Sandbox Code Playgroud)

旁白:在大多数情况下,建议添加目标列表.

您引用维基百科页面已经提出了相同的建议:

对PostgreSQL使用带有RETURNING子句的INSERT语句(自8.2起).返回的列表与SELECT的结果相同.