Может работать так:
-- DROP SCHEMA x CASCADE;
CREATE SCHEMA x;
CREATE TABLE x.priv_id(seq_id int primary key, id int);
INSERT INTO x.priv_id
SELECT generate_series(1,100,1), (random() * 1000)::int;
CREATE SEQUENCE x.priv_seq;
SELECT id
FROM x.priv_id
WHERE seq_id = (SELECT nextval('x.priv_seq'));
Основные баллы:
1) Создать таблицу поиска с двумя числами
- seq_id
считает от 1 до вашего первичного ключа.
- id
- ваши числа в последовательности (здесь я подставил случайные числа).
2) Создайте вспомогательную последовательность.
3) Получите ваши номера с помощью SELECT, как указано выше.
Вы должны отменить выбор, иначе все значения будут возвращены сразу.
Это решение обеспечивает всю безопасность, которую nextval () может предложить для параллелизма.
Создайте уникальный индекс для priv_id (id), если хотите убедиться, что ваши пользовательские идентификаторы уникальны.