我有许多功能可以将不同的数据插入到多个表中。 在某些情况下,对于所有功能,需要填充人员ID列。 由于所有数据插入函数都返回插入行的ID,我可以执行set_staff_id(staff_id,insert_data1(...)); 而不是为所有数据插入函数添加一个可选的staff_id参数,也不会同时处理set staff_id代码。
我正在努力避免代码重复,但想知道这是否是正确的方法。 感谢。
答案 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;