किसी धारावाहिक से अद्वितीय और यादृच्छिक-दिखने वाले पहचानकर्ता उत्पन्न करने के लिए, सिफर का उपयोग करना एक अच्छा विचार हो सकता है। चूंकि उनका आउटपुट बायजेक्टिव है (इनपुट और आउटपुट मानों के बीच एक-से-एक मैपिंग है) -- आपके पास कोई टकराव नहीं होगा , हैश के विपरीत। इसका मतलब है कि आपके पहचानकर्ताओं को हैश जितना लंबा नहीं होना चाहिए।
अधिकांश क्रिप्टोग्राफिक सिफर 64-बिट या बड़े ब्लॉक पर काम करते हैं, लेकिन PostgreSQL विकी में एक उदाहरण PL/pgSQL प्रक्रिया है। "गैर-क्रिप्टोग्राफ़िक" सिफर
. के लिए फ़ंक्शन जो (32-बिट) int
. पर काम करता है प्रकार। अस्वीकरण:मैंने स्वयं इस फ़ंक्शन का उपयोग करने का प्रयास नहीं किया है।
अपनी प्राथमिक कुंजियों के लिए इसका उपयोग करने के लिए, विकी पेज से क्रिएट फंक्शन कॉल चलाएँ, और फिर अपने खाली पर टेबल करते हैं:
ALTER TABLE foo ALTER COLUMN foo_id SET DEFAULT pseudo_encrypt(nextval('foo_foo_id_seq')::int);
और वोइला!
pg=> insert into foo (foo_id) values(default);
pg=> insert into foo (foo_id) values(default);
pg=> insert into foo (foo_id) values(default);
pg=> select * from foo;
foo_id
------------
1241588087
1500453386
1755259484
(4 rows)