इस तरह काम कर सकता है:
-- 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) ऊपर दिए गए एक चयन के साथ अपने नंबर प्राप्त करें।
आपको उप-चयन की आवश्यकता है, या सभी मान एक ही बार में वापस कर दिए जाएंगे।
यह समाधान सभी सुरक्षा देता है nextval()
समवर्ती के लिए प्रस्ताव देना होगा।
यदि आप सुनिश्चित करना चाहते हैं कि आपकी कस्टम आईडी अद्वितीय हैं, तो priv_id(id) पर एक अद्वितीय अनुक्रमणिका बनाएं।