Postgres嵌套函数

时间:2016-10-16 21:40:27

标签: sql postgresql

我有许多功能可以将不同的数据插入到多个表中。 在某些情况下,对于所有功能,需要填充人员ID列。 由于所有数据插入函数都返回插入行的ID,我可以执行set_staff_id(staff_id,insert_data1(...)); 而不是为所有数据插入函数添加一个可选的staff_id参数,也不会同时处理set staff_id代码。

我正在努力避免代码重复,但想知道这是否是正确的方法。 感谢。

1 个答案:

答案 0 :(得分: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;