The new upsert feature is a great addition, but in some cases is not
as usable as
I and seems lots of others would like it to be, take an example with
circular references:
create table foo ( id serial references bar(foo_id) on delete cascade, i int
);
create table bar ( foo_id integer references foo(id) on delete cascade, i int
);
A insert here would be:
with _foo as ( insert into foo(i) values(1) returning id
) insert into bar(foo_id,i) select id,2 from _foo;
But with upsert/do nothing, this will not work as "needed".
Would it be possible to introduce a "ON CONFLICT SELECT" argument:
with _foo as ( insert into foo(i) values(1) on conflict select returning id
) insert into bar(foo_id,i) select id,2 from _foo;
--
Bj(/)rnar