Kunne fungere sådan her:
-- 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'));
Vigtigste punkter:
1) Opret en opslagstabel med to tal
- seq_id
tæller fra 1 og din primære nøgle.
- id
er dine tal i rækkefølge (jeg har erstattet tilfældige tal her).
2) Opret en hjælpesekvens.
3) Få dine tal med et SELECT som ovenfor.
Du skal bruge undervælgeren, eller alle værdier vil blive returneret med det samme.
Denne løsning giver al sikkerhed nextval()
har at tilbyde for samtidighed.
Opret et unikt indeks på priv_id(id), hvis du vil sikre dig, at dine brugerdefinerede id'er er unikke.