0

我必須直接在第一個和第二個表中插入數據。但是,作爲數組接受了數據的第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,但具體細節等欄目不同

@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表達式的行,將它們合併爲一個新的INSERT,data-modifying CTE。類似這樣的:

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, ...);