我正在将数据插入表中,并想返回插入的数据。插入的数据包含外键。我想通过外键的连接来获取整个数据。
我尝试将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;
答案 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)
您可以为此使用CTE:
WITH inserting AS (
INSERT INTO...
RETURNING <new data>
)
SELECT i.*, ft.*
FROM inserting i JOIN foreign_table ft ...
在这种情况下,将执行INSERT
语句。 SELECT
语句将在此之后执行。这可以引用插入的数据。