我正在尝试在m:n表(用户组关系)中插入记录,并在用户成功加入时返回该组。
但是我无法在插入后设法返回整个组。
with "group" as (
SELECT * from "group" where code = 'tohubo' LIMIT 1
)
insert into group_users__user_groups ("group_users", "user_groups")
select id from "group", 1
returning (SELECT * from "group")
使用该查询我当前收到错误消息
子查询必须只返回一列
我也尝试返回*,但之后我只获得了group_users__user_groups的内容。
我还尝试在最后添加一个额外的选择:
with "found_group" as (
SELECT * from "group" where code = 'tohubo' LIMIT 1
)
insert into group_users__user_groups ("group_users", "user_groups")
select 1, id from "found_group";
Select * from "found_group";
但是然后在第二个查询中没有定义WITH部分:
内核错误:错误:关系“found_group”不存在
答案 0 :(得分:2)
returning
子句只能返回受插入影响的数据。
你只能有一个" final" CTE中的语句,而不是插入和一个选择。
但你可以简单地将插入移动到第二个cte,然后在结尾处有一个SELECT返回找到的数据
with found_group as (
SELECT *
from "group"
where code = 'tohubo'
LIMIT 1
), inserted as (
insert into group_users__user_groups (group_users, user_groups)
select 1, id
from found_group
)
Select *
from found_group;