जवाबों:
OSSP uuid फ़ंक्शंस में से DEFAULT
एक को बुलाने के लिए एक कॉलम को परिभाषित करते समय कॉल करें । पोस्टग्रैज सर्वर हर बार एक पंक्ति में सम्मिलित होने पर फ़ंक्शन को स्वचालित रूप से लागू करेगा।
CREATE TABLE tbl
(
pkey UUID NOT NULL DEFAULT uuid_generate_v1() ,
CONSTRAINT pkey_tbl PRIMARY KEY ( pkey )
)
जबकि Postgres आउट-ऑफ-द-बॉक्स का समर्थन करता है भंडारण UUID (वैश्विक अनुपम पहचानकर्ता) अपनी मूल में मान 128-बिट रूप है, पैदा UUID मूल्यों एक प्लग-इन की आवश्यकता है। Postgres में, प्लग-इन को a के रूप में जाना जाता है extension
।
एक्सटेंशन इंस्टॉल करने के लिए, कॉल करें CREATE EXTENSION
। फिर से स्थापित करने से बचने के लिए, जोड़ें IF NOT EXISTS
। देखें मेरे ब्लॉग पोस्ट अधिक जानकारी के लिए, या देखना StackOverflow में इस पेज ।
हम जो एक्सटेंशन चाहते हैं, वह एक ओपन-सोर्स लाइब्रेरी है, जो UUIDs, OSSP uuid के साथ काम करने के लिए C में निर्मित है । एक Postgres के लिए इस पुस्तकालय का निर्माण अक्सर इस तरह के रूप में Postgres की एक अधिष्ठापन के साथ आ जाते प्रदान की चित्रमय संस्थापक द्वारा एंटरप्राइज डीबी जैसे बादल प्रदाताओं द्वारा या शामिल PostgreSQL के लिए अमेज़न आरडीएस ।
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
UUID मानों के विभिन्न प्रकारों को बनाने के लिए पेश किए गए कई आदेशों की एक सूची देखने के लिए एक्सटेंशन का दस्तावेज़ देखें। UUID के मूल संस्करण को कंप्यूटर के मैक एड्रेस के साथ-साथ वर्तमान तिथि-समय के साथ-साथ एक छोटे यादृच्छिक मान से प्राप्त करने के लिए कॉल करें uuid_generate_v1()
।
SELECT uuid_generate_v1();
672124b6-9894-11e5-be38-001d42e813fe
बाद में इस विषय पर विभिन्न प्रकार के UUIDs के प्रकार विकसित किए गए। कुछ लोग सर्वर के वास्तविक मैक पते को रिकॉर्ड नहीं करना चाहते हैं, उदाहरण के लिए, सुरक्षा या गोपनीयता चिंताओं के लिए। पोस्टग्रैज एक्सटेंशन UUID के पांच प्रकार उत्पन्न करता है, साथ ही "नील" UUID 00000000-0000-0000-0000-000000000000
।
वह विधि कॉल किसी भी नई सम्मिलित पंक्ति के लिए डिफ़ॉल्ट मान उत्पन्न करने के लिए स्वचालित रूप से की जा सकती है। कॉलम को परिभाषित करते समय, निर्दिष्ट करें:
DEFAULT uuid_generate_v1()
निम्न उदाहरण तालिका परिभाषा में प्रयुक्त उस आदेश को देखें।
CREATE TABLE public.pet_
(
species_ text NOT NULL,
name_ text NOT NULL,
date_of_birth_ text NOT NULL,
uuid_ uuid NOT NULL DEFAULT uuid_generate_v1(), -- <====
CONSTRAINT pet_pkey_ PRIMARY KEY (uuid_)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.pet_
OWNER TO postgres;
UUID-ossp प्लगइन उत्पन्न कर सकते हैं UUID के विभिन्न संस्करणों ।
uuid_generate_v1()
uuid_generate_v1mc()
uuid_generate_v3( namespace uuid, name text )
uuid_generate_v4()
uuid_generate_v5( namespace uuid, name text )
uuid_nil()
00000000-0000-0000-0000-000000000000
। एक अज्ञात यूयूआईडी मूल्य के लिए एक ध्वज के रूप में उपयोग किया जाता है। एक नील UUID के रूप में जाना जाता है ।प्रकारों की तुलना करने के लिए, प्रश्न देखें कि किस UUID संस्करण का उपयोग करना है?
यदि आप संस्करण 3 और 5 के बारे में उत्सुक हैं, तो यह प्रश्न देखें, v5 UUID उत्पन्न करना। नाम और नाम स्थान क्या है? ।
अधिक चर्चा के लिए, मेरे उत्तर को एक समान प्रश्न पर और मेरे ब्लॉग को UDID से JDBC से पोस्टग्रैज तक देखें ।
getObject()
आप के परिणाम का भी उपयोग कर सकेंUUID id = rs.getObject("uuid_", UUID.class);
uuid_generate_v1
या तो कॉल करके uuid_generate_v1mc
।
बेसिल के बहुत विस्तृत उत्तर के लिए बस एक छोटा सा जोड़:
चूंकि वर्तमान में अधिकांश pgcrypto का उपयोग कर रहे हैं , uuid_generate_v1()
आप के बजाय gen_random_uuid()
एक संस्करण 4 UUID मान के लिए उपयोग कर सकते हैं ।
सबसे पहले, अपने Postgres में pgcrypto को सक्षम करें।
CREATE EXTENSION "pgcrypto";
बस एक कॉलम के DEFAULT को सेट करें
DEFAULT gen_random_uuid()