복붙노트

[SQL] PostgreSQL의 멀티 INSERT는 ... 여러 열로의 반품

SQL

PostgreSQL의 멀티 INSERT는 ... 여러 열로의 반품

난`3 개 테이블을 가진, 백엔드로 포스트 그레스 9.3로 데이터베이스를 구축 :

table1 (user_id, username, name, surname, emp_date)
table2 (pass_id, user_id, password)
table3 (user_dt_id, user_id, adress, city, phone)

으로 볼 수있는 표 2와 표 3은 표 1의 자식 테이블입니다. 나는 표에서 새로 삽입 된 행 (부모)의 USER_ID를 추출 할 수 있습니다 :

INSERT INTO "table1" (default,'johnee','john','smith',default) RETURNING userid;

나는 그 테이블에 대한 고유 한 다른 데이터와 함께 표 2와 표 3의 USER_ID 컬럼으로 (표에서) 새로 추출 된 ID를 삽입해야합니다. 기본적으로 3 X INSERT ... 어떻게 그렇게 할 수 있습니까?

해결법

  1. ==============================

    1.사용 체인에 세 개의 INSERT들을 열팽창 계수를 데이터-수정. 이 같은:

    사용 체인에 세 개의 INSERT들을 열팽창 계수를 데이터-수정. 이 같은:

    WITH ins1 AS (
       INSERT INTO table1 (username, name,  surname)
       VALUES ('johnee','john','smith')
       RETURNING user_id
       )
    , ins2 AS (
       INSERT INTO table2 (user_id, password)
       SELECT ins1.user_id, 'secret'
       FROM   ins1                            -- nothing to return here
       )
    INSERT INTO table3 (user_id, adress, city, phone)
    SELECT ins1.user_id, ...
    FROM   ins1
    RETURNING user_id;
    

    CTE는 (일명, "쓰기") 데이터 수정에 대한 자세한 내용 :

  2. from https://stackoverflow.com/questions/22775109/postgresql-multi-insert-returning-with-multiple-columns by cc-by-sa and MIT license