使用SELECT语句返回INSERT INTO语句

时间:2019-07-03 12:59:14

标签: postgresql join sql-insert

我正在将数据插入表中,并想返回插入的数据。插入的数据包含外键。我想通过外键的连接来获取整个数据。

我尝试将SELECT放到RETURNING中,但是没有运气。甚至有可能吗?还是我只需要在插入数据后再执行一次查询?

插入声明:

INSERT INTO someTable (col1, col2, col3, foreign_id) 
VALUES  ('value1', 'value2', 'value3', 1);

因此,在这种情况下,我可以给我一个基本上可以给我的退货吗?

SELECT someTable.*, foreignTable.* 
FROM someTable 
   JOIN foreignTable ON someTable.foreign_id = foreignTable.id;

2 个答案:

答案 0 :(得分:1)

您可以使用CTE

with new_row as (
  INSERT INTO some_table (col1, col2, col3, foreign_id) 
  VALUES  ('value1', 'value2', 'value3', 1)
  returning *
)
SELECT new_row.*, ft.* 
FROM new_row
   JOIN foreign_table ft ON new_row.foreign_id = ft.id;

答案 1 :(得分:1)

demo:db<>fiddle

您可以为此使用CTE:

WITH inserting AS (
    INSERT INTO...
    RETURNING <new data>
)
SELECT i.*, ft.*
FROM inserting i JOIN foreign_table ft ...

在这种情况下,将执行INSERT语句。 SELECT语句将在此之后执行。这可以引用插入的数据。