2016-10-16 4 views
0

여러 데이터를 여러 테이블에 삽입하는 함수가 많습니다. 경우에 따라 모든 기능에 대해 직원 ID 열을 입력해야합니다. 모든 데이터 삽입 함수는 삽입 된 행의 ID를 반환하므로 set_staff_id (staff_id, insert_data1 (...)); 모든 데이터 삽입 함수에 선택적 staff_id 인수를 추가하는 대신 set staff_id 코드를 사용해야합니다.Postgres 중첩 기능

나는 코드 중복을 피하려고하지만 이것이 올바른 aproach인지 궁금합니다. 감사합니다. .

답변

1

Postgres를 사용하면 CTE 내에 insert을 사용할 수 있습니다. 따라서이 공식은 도움이 될 수 있습니다 :

with s as (
     insert into staff(. . .) 
      values (. . .) 
      returning * 
    ), 
    t1 as (
     insert into t1(staffid, . . .) 
      select s.staffid, . . . 
      from s 
    ) 
insert into t2(staffid, . . .) 
    select s.staffid, . . . 
    from s; 
+0

답변 주셔서 감사합니다. 전 CTE를 사용하지 않았습니다. – Dylan