Mohlo by to fungovat takto:
-- 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'));
Hlavní body:
1) Vytvořte vyhledávací tabulku se dvěma čísly
- seq_id
se počítá od 1 a vašeho primárního klíče.
- id
jsou vaše čísla v posloupnosti (zde jsem dosadil náhodná čísla).
2) Vytvořte pomocnou posloupnost.
3) Získejte svá čísla pomocí SELECT jako výše.
Potřebujete podvýběr nebo všechny hodnoty budou vráceny najednou.
Toto řešení poskytuje veškeré zabezpečení nextval()
musí nabídnout souběžnost.
Vytvořte jedinečný index na priv_id(id), pokud se chcete ujistit, že vaše vlastní ID jsou jedinečná.