LINUX.ORG.RU

Идентификаторы при вставке записей Postgresql

 ,


0

2

Использую СУБД PostgreSQL, вставляю записи в таблицу Контакты, поле Контакт - поле c id. Вставку делаю записей при помощи PGCOPY. Вставляемые записи являются частью иерархического списка, у каждой записи есть поле Родитель - id родителя. Я получаю массив id вставляемых записей:

SELECT array_agg(nextval(seq)) «arr»

FROM generate_series(1, 10 ), pg_get_serial_sequence(«Контакты», «Контакт») seq

затем заполняю поле Родитель из полученного массива id и через PGCOPY вставляю записи. Все хорошо работает, но если между получением массива id и вставкой записей, будет добавлена левая запись при помощи INSERT, то будет использован id из массива и иерархия нарушится. Вопрос такой: есть ли возможность в PostgreSQL забронировать некоторый диапазон id, то есть я получаю массив id, этот массив бронируется и при последующей вставке через INSERT с автоинкриментом id из этого массива не используются.



Последнее исправление: polin11 (всего исправлений: 2)

Вопрос такой: есть ли возможность в PostgreSQL забронировать некоторый диапазон id

Вообще, в этом нет необходимости. sequence'ы не версионируются в транзакциях и nextval всегда отрабатывает последовательно.

H3
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.