При вставке в Postgres с помощью оператора select
гарантированно вставляются строки в том же порядке, в котором их возвращает оператор select?
То есть с учетом таблицы bar
(где id
равно SERIAL PRIMARY KEY
, name
равно TEXT
):
id | name
---+-----
0 | A
1 | B
2 | C
И еще одна таблица, foo
(пустая и с той же схемой), если I INSERT INTO foo (name) SELECT name FROM bar ORDER BY id DESC
будет foo
гарантированно будет иметь:
id | name
---+-----
0 | C
1 | B
2 | A
Это похоже на случай, но я хотел бы подтвердить, что это не деталь реализации, которая может не сохраняться при больших выборках.
Я прочитал раздел 13.8 в стандарте SQL-92 и в общем правиле № 3 утверждается, что «выражение запроса эффективно оценивается перед вставкой каких-либо строк в B.», но оно явно ничего не говорит оупорядоченность.Является ли стандарт целенаправленно расплывчатым (возможно, чтобы разрешить параллельные вставки?), А упорядоченность - это деталь реализации?