0

첫 번째 및 두 번째 테이블에 데이터를 직접 삽입해야합니다. 그러나 배열로 데이터를 받고 세 번째 테이블에 동일한 세 번째 테이블을 삽입했습니다.반복되는 값을 사용하여 한 번에 여러 테이블에 데이터를 삽입하십시오.

내 세 번째 테이블에 값이 반복됩니다. 예 :

값 :

{name=ff,age=45,empid=23,desig=se,offid=1,details=kk,offid=2,details=aa,offid=3,details=bb,offid=4,details=cc} 

그래서 모든 offid에 대해 동일하게 2 표 userid를 사용하지만, 내용과 다른 열이 다른

@My 문제는 내가 하나의 히트하지만 난을 얻을 것입니다 세 번째 테이블을 반복해야합니다.

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

예, 가능합니다.
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, ...);