Zou als volgt kunnen werken:
-- 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'));
Belangrijkste punten:
1) Maak een opzoektabel met twee getallen
- seq_id
telt vanaf 1 en uw primaire sleutel.
- id
zijn je nummers in volgorde (ik heb hier willekeurige nummers vervangen).
2) Maak een hulpreeks.
3) Krijg je nummers met een SELECT zoals hierboven.
Je hebt de subselect nodig, of alle waarden worden in één keer geretourneerd.
Deze oplossing geeft alle beveiliging nextval()
te bieden heeft voor gelijktijdigheid.
Maak een unieke index op priv_id(id) als u zeker wilt weten dat uw aangepaste id's uniek zijn.