예 :INSERT RETURNING은 "올바른"순서로 물건을 반환하도록 보장됩니까?
create table foo(
id serial,
txt text
);
insert into foo(txt) values ('a'),('b'),('c') returning id;
결과 :
id
----
1
2
3
(3 rows)
그것은 반환 값의 첫번째id
항상 id
'a'
이 될 것 보인다, 등등 'b'
와의 두 번째, insert into
의 정의 된 동작입니까, 아니면 이상한 상황에서 실패 할 수있는 우연의 일치입니까?
관계가 정렬되어 있지 않다는 것을 알고 있지만 'values'부분을 관계 또는 목록으로 모델링할지 여부를 알지 못했습니다. 나는 특별한 경우 일 수 있기를 기대합니다. (txt, id)를 반환하는 foo (txt) 값 ('a'), ('b'), ('c') 삽입에 약간의 낭비가 보인다. – FunctorSalad
@FunctorSalad :'values'는 아마리스트로 취급되지만 어디에서나 보장됩니다.그리고'돌아 오는 것 '에서 주문을 처리하는 것이 당신의 병목 목이라면 아마 괜찮을 것입니다. –
동의, * 절대적으로 * 의존하지 마십시오. PostgreSQL은 입력을 정렬 할 권한이 있지만 삽입 성능이 가장 좋습니다. 인덱스 구성 테이블을 구현하면 아마도 가능합니다. –