Re: JDBC driver - is "getGeneratedKeys()" guaranteed to return the ids in the same order a batch insert was made?

From: electrotype <electrotype(at)gmail(dot)com>
To: "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: JDBC driver - is "getGeneratedKeys()" guaranteed to return the ids in the same order a batch insert was made?
Date: 2020-12-09 14:48:42
Message-ID: 4ce0f5f5-d608-887b-b5ef-21ae187e3b58@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> So I'm curious. Why does order matter ?
>
> Dave Cramer
> www.postgres.rocks

When you have to save multiple new entities with subentities.

You first save all the parent entities in a single SQL batch insert, you get the generated ids, then
insert all the subentities in another single SQL batch insert. To know which "parent id" to use for
a given subentity of the second query, you need a way to associate a generated id with the correct
parent entity. The order of the parents in their batch, and the order of the generated ids, is the
only straighforward way.

I know all this could be made into a single SQL query, without having to associate the generated ids
to the parents manually. But sometimes you have to fight /really /hard agains your framework or JDBC
itself to write such more complex query, where two batch inserts are very natural.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Joe Conway 2020-12-09 14:57:50 Re: postgres-10 with FIPS
Previous Message Wolfgang Walther 2020-12-09 13:42:43 Execution order of CTEs / set_config and current_setting in the same query