一次将多行插入两个表并将它们关联到postgres

时间:2019-07-02 19:06:28

标签: sql postgresql

在这样的数据库中:

create table a (
  id serial primary key,
  data integer not null
);

create table b (
  id serial primary key,
  data integer not null
);

create table link (
  a_id integer unique not null references a(id),
  b_id integer unique not null references b(id)
);

insert into a (data) values (1),(1),(1),(2),(2),(3);

我想将link中的每一行ab中新创建的包含相同数据的行。

也就是说,我想为表b中的每一行创建表a中的一行,并包含相同的data,并且我想在表中创建一行link以数据始终匹配的一对一方式将表a中的行链接到表b

有没有办法在单个查询中做到这一点?

有没有一种方法可以在不删除link表的not null约束的情况下?

我希望我能做到:

with bs as (
  insert into b (data)
  select data
  from a
  returning a.id as a_id, b.id as b_id
)
insert into link (a_id, b_id)
select bs

但是,postgres不允许我返回未插入的字段。

0 个答案:

没有答案