PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

अनुक्रम को यादृच्छिक संख्या से बदलना

किसी धारावाहिक से अद्वितीय और यादृच्छिक-दिखने वाले पहचानकर्ता उत्पन्न करने के लिए, सिफर का उपयोग करना एक अच्छा विचार हो सकता है। चूंकि उनका आउटपुट बायजेक्टिव है (इनपुट और आउटपुट मानों के बीच एक-से-एक मैपिंग है) -- आपके पास कोई टकराव नहीं होगा , हैश के विपरीत। इसका मतलब है कि आपके पहचानकर्ताओं को हैश जितना लंबा नहीं होना चाहिए।

अधिकांश क्रिप्टोग्राफिक सिफर 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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या INSERT [...] संघर्ष पर विदेशी कुंजी उल्लंघनों के लिए उपयोग किया जा सकता है?

  2. PostgreSQL 9.2 में तालिका को लॉक किए बिना डेटाबेस पंक्तियों को अद्यतन करना

  3. JSON तत्व को कैसे क्वेरी करें

  4. लेखन त्रुटि:शून्य की विधि 'क्वेरी' को कॉल नहीं कर सकता - जब pg.connect को Heroku node.js . के साथ कॉल करें

  5. SQL सर्वर संग्रहीत कार्यविधि को PostgreSQL संग्रहीत कार्यविधि में कनवर्ट करें