2016-10-16 3 views
0

私はいくつかのテーブルに異なるデータを挿入する多数の関数を持っています。 場合によっては、すべての機能に対して、スタッフID列を入力する必要があります。 すべてのデータ挿入関数は挿入された行のIDを返すので、set_staff_id(staff_id、insert_data1(...))を実行できます。 オプションのstaff_id引数をすべてのデータ挿入関数に追加する代わりに、設定されたstaff_idコードをcoppyingするのではなく、Postgresネスト関数

私はコードの重複を避けようとしていますが、これが正しいaproachかどうか疑問です。おかげさまで

答えて

1

Postgresでは、insertをCTE内で使用することができます。だから、この処方は助けになるかもしれません:

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

関連する問題