例子:
create table foo(
id serial,
txt text
);
insert into foo(txt) values ('a'),('b'),('c') returning id;
返回:
id
----
1
2
3
(3 rows)
返回值中的first id
始终是'a'
的id
,'b'
的第二个,以此类推,这是insert into
的定义行为,还是在奇怪的情况下可能失败的巧合?
例子:
create table foo(
id serial,
txt text
);
insert into foo(txt) values ('a'),('b'),('c') returning id;
返回:
id
----
1
2
3
(3 rows)
返回值中的first id
始终是'a'
的id
,'b'
的第二个,以此类推,这是insert into
的定义行为,还是在奇怪的情况下可能失败的巧合?
我看不到任何the documentation件能保证RETURNING
件的订单,所以我认为你不能相信它.RETURNING
订单很可能与VALUES
订单匹配,但我看不到任何关于VALUES
订单将被插入其中的保证;VALUES
几乎肯定会按从左到右的顺序插入,但同样,没有文件保证.
此外,关系模型是基于集合的,因此排序是用户应用的东西,而不是关系的固有属性.一般来说,如果没有明确指定顺序的方法,就没有隐含的顺序.
执行摘要:你看到的顺序可能总是会发生,但不能保证,所以不要依赖它.