我必须直接在第一个和第二个表中插入数据。但我收到数据作为数组并插入第3个表的第三个表格相同。
在我的第3个表中,将重复值。例如:
值:
{name=ff,age=45,empid=23,desig=se,offid=1,details=kk,offid=2,details=aa,offid=3,details=bb,offid=4,details=cc}
因此,对于所有userid
使用第二个表格offid
,但细节和其他列不同
@我的问题是我会获得单击,但我需要迭代第3桌。
with first_insert as (
insert into sample(name,age)
values(?,?)
RETURNING id
),
second_insert as (
insert into sample1(empid,desig)
values((select id from first_insert),?)
RETURNING userid
)
insert into sample2(offid,details)
values((select userid from second_insert),?)
这在PostgreSQL中可用还是可行?
答案 0 :(得分:0)
是的,绝对可能。
您可以将CTE中的行与VALUES
表达式相关联,以便将它们合并为data-modifying CTE中的新INSERT
。像这样:
WITH first_insert AS (
INSERT INTO sample(name,age)
VALUES (?,?)
RETURNING id
)
, second_insert AS (
INSERT INTO sample1(empid, desig, colx)
SELECT i1.id, v.desig, v.colx
FROM first_insert i1
, (VALUES(?,?)) AS v(desig, colx)
RETURNING userid
)
INSERT INTO sample2(offid, details, col2, ...)
SELECT i2.userid, v.details, ...
FROM second_insert i2
, (VALUES (?,?, ...)) AS v(details, col2, ...);