Thread: INSERT RETURNING

INSERT RETURNING

From
PG Doc comments form
Date:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/14/dml-returning.html
Description:

If I execute the below query
```
CREATE TABLE users (
  id serial primary key,
  name varchar(255)
)
INSERT INTO users (name) VALUES ('a'), ('b'), ('c') RETURNING id
```
Is there any chance that the order of the returned ids is different from the
order of data passed
To be more clear, if the returned ids are `1, 2, 3`, is it guaranteed that
the data order is ((1, a), (2, b), (3, c)) or can it be ((1, b), (2, a), (3,
c))?

Re: INSERT RETURNING

From
"David G. Johnston"
Date:
On Sun, Aug 28, 2022 at 7:51 AM PG Doc comments form <noreply@postgresql.org> wrote:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/14/dml-returning.html
Description:

If I execute the below query
```
CREATE TABLE users (
  id serial primary key,
  name varchar(255)
)
INSERT INTO users (name) VALUES ('a'), ('b'), ('c') RETURNING id
```
Is there any chance that the order of the returned ids is different from the
order of data passed
To be more clear, if the returned ids are `1, 2, 3`, is it guaranteed that
the data order is ((1, a), (2, b), (3, c)) or can it be ((1, b), (2, a), (3,
c))?

There is no guarantee that insertion will happen in any particular order.  If you have to associate a given generated id with a given record either the record must have it own natural key (in which case return both the natural and surrogate keys) or you have to insert one record at a time.

David J.