Könnte so funktionieren:
-- 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'));
Hauptpunkte:
1) Erstellen Sie eine Nachschlagetabelle mit zwei Zahlen
- seq_id
zählt von 1 und Ihrem Primärschlüssel.
- id
sind Ihre Zahlen in Folge (ich habe hier zufällige Zahlen ersetzt).
2) Erstellen Sie eine Hilfssequenz.
3) Holen Sie sich Ihre Zahlen mit einem SELECT wie oben.
Sie benötigen die Unterauswahl oder alle Werte werden sofort zurückgegeben.
Diese Lösung bietet die gesamte Sicherheit nextval()
für Parallelität bieten muss.
Erstellen Sie einen eindeutigen Index für priv_id(id), wenn Sie sicherstellen möchten, dass Ihre benutzerdefinierten IDs eindeutig sind.