使用POSTGRES从单个SELECT插入2个相关表中

时间:2018-09-24 19:58:57

标签: sql postgresql

尝试将数据从单个表cc移到由外键关联的2个表aabb中:

Table cc
====
data_a, data_b


Table aa
====
id, data_a


Table bb
====
id, data_b, aa_id

bb具有外键aa_id。我需要在aa中用cc.data_a创建一行,并在bb中用cc.data_b和新创建的aa.id创建一行。

这可能吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:1)

这是您想要的吗?

with ar as (
      insert into aa (data_a)
         select distinct data_a
         from cc
         returning *
     )
insert into bb (data_b, aa_id)
    select cc.data_b, ar.id
    from cc join
         ar
         on cc.data_a = ar.data_a;

这假设您已经预先定义了a b列的serialid