INSERT RETURNING

Started by PG Bug reporting formover 3 years ago2 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

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))?

#2David G. Johnston
david.g.johnston@gmail.com
In reply to: PG Bug reporting form (#1)
Re: INSERT RETURNING

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.