Доброго дня!
Есть web-интерфейс для организации прёма заказов, данные хранятся в PostgreSQL. Несколько таблиц связаны между собой по ID, скажем таблицы B содержит в одной из колонок ID из таблицы A.
Если я вставляю одну строку в таблицу А, то я могу получить ID используя currval('seq') и использовать его при вставке данных в таблицу B.
Но вставлять по одной строке не очень эффективно и хочется использовать запросы вида INSERT INTO A (col1, col2) VALUES (data1, data2), (data3, data4), (data5, data6)
Была идея в данном случае перед вставкой данных запрашивать currval, но при этом я получаю ошибку ERROR: currval of sequence "item_id" is not yet defined in this session, ну а web-е пустота.
Вопрос - как я могу получить ID всех строк вставленных последним INSERT?
Спасибо.
Upd
Похоже решение найдено. Надо использовать запрос вида INSERT INTO A (col1, col2) VALUES (data1, data2) RETURNING id.
Судя по http://habrahabr.ru/blogs/postgresql/72590/ это же должно работать и при вставке нескольких строк.
Postgres: получение id строк
Модератор: Модераторы разделов