मारियाडीबी में, UUID()
एक अंतर्निहित फ़ंक्शन है जो एक यूनिवर्सल यूनिक आइडेंटिफ़ायर (UUID) देता है।
यूयूआईडी "डीसीई 1.1:रिमोट प्रोसीजर कॉल" (परिशिष्ट ए) सीएई (कॉमन एप्लीकेशन एनवायरनमेंट) स्पेसिफिकेशंस के अनुसार द ओपन ग्रुप द्वारा अक्टूबर 1997 में प्रकाशित किया गया है (दस्तावेज़ संख्या C706)।
सिंटैक्स
वाक्य रचना इस प्रकार है:
UUID()
इसलिए, किसी तर्क की आवश्यकता नहीं है (या स्वीकृत)।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:
SELECT UUID();
परिणाम:
+--------------------------------------+ | UUID() | +--------------------------------------+ | e5aa36ee-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
अगर मैं इसे दूसरी बार कॉल करता हूं, तो मुझे एक अलग मान मिलता है:
SELECT UUID();
परिणाम:
+--------------------------------------+ | UUID() | +--------------------------------------+ | f11b4702-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
यूयूआईडी के बारे में
एक यूयूआईडी (यूनिवर्सल यूनिक आइडेंटिफ़ायर) एक संख्या है जिसे अंतरिक्ष और समय में विश्व स्तर पर अद्वितीय होने के लिए डिज़ाइन किया गया है। UUID()
पर दो कॉल दो अलग-अलग मान उत्पन्न करने की अपेक्षा की जाती है, भले ही ये कॉल दो अलग-अलग कंप्यूटरों पर की जाती हैं जो एक दूसरे से जुड़े नहीं हैं।
UUID एक 128-बिट संख्या है जिसे aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
में पांच हेक्साडेसिमल संख्याओं की utf8 स्ट्रिंग द्वारा दर्शाया जाता है। प्रारूप:
- पहले तीन नंबर टाइमस्टैम्प से उत्पन्न होते हैं।
- चौथा नंबर अस्थायी विशिष्टता को बरकरार रखता है यदि टाइमस्टैम्प मान एकरसता खो देता है (उदाहरण के लिए, डेलाइट सेविंग टाइम के कारण)।
- पांचवां नंबर IEEE 802 नोड नंबर है जो स्थानिक विशिष्टता प्रदान करता है। एक यादृच्छिक संख्या को प्रतिस्थापित किया जाता है यदि बाद वाला उपलब्ध नहीं है। ऐसे मामलों में, स्थानिक विशिष्टता की गारंटी नहीं दी जा सकती है। ऐसा कहने के बाद, टक्कर एक अत्यंत कम संभावना वाली घटना होनी चाहिए।
ध्यान दें कि UUID()
. का उपयोग करने वाले कथन कथन-आधारित प्रतिकृति के लिए फ़ंक्शन सुरक्षित नहीं हैं।
SYS_GUID()
की तुलना में समारोह
UUID()
by द्वारा दिया गया परिणाम SYS_GUID()
द्वारा लौटाए गए के समान है फ़ंक्शन, सिवाय इसके कि SYS_GUID()
इसमें हाइफ़न चिह्न शामिल नहीं है (-
) परिणाम में (जबकि, UUID()
करता है)।
यहां दोनों की तुलना की गई है:
SELECT
UUID(),
SYS_GUID();
परिणाम:
+--------------------------------------+----------------------------------+ | UUID() | SYS_GUID() | +--------------------------------------+----------------------------------+ | 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 | +--------------------------------------+----------------------------------+
SYS_GUID()
Oracle संगतता बढ़ाने के लिए MariaDB 10.6.1 में फ़ंक्शन पेश किया गया था।
एक UUID_SHORT()
भी है फ़ंक्शन जो एक लघु UUID को 64-बिट अहस्ताक्षरित पूर्णांक के रूप में लौटाता है।
पासिंग तर्क
जैसा कि बताया गया है, UUID()
किसी तर्क को स्वीकार नहीं करता। जब मैं तर्क पास करता हूँ तो क्या होता है:
SELECT UUID(3);
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'