जल्द ही (5.6.4), MySQL fractional प्रदान करेगा सेकंड TIMESTAMP कॉलम में, हालांकि, आंशिक सेकंड भी अद्वितीय होने की गारंटी नहीं है, हालांकि सैद्धांतिक रूप से, वे अक्सर अद्वितीय होंगे, खासकर यदि आपने MySQL को एक थ्रेड तक सीमित कर दिया है।
आप एक UUID का उपयोग कर सकते हैं यदि आपको एक अद्वितीय संख्या की आवश्यकता है जिसे अस्थायी रूप से आदेश दिया गया है।
SELECT UUID()
कुछ इस तरह पैदा करता है:
45f9b8d6-8f00-11e1-8920-842b2b55ce56
और कुछ समय बाद:
004b721a-8f01-11e1-8920-842b2b55ce56
यूयूआईडी के पहले तीन भागों में समय शामिल है, हालांकि, वे उच्चतम सटीकता से कम से कम क्रम में हैं, इसलिए आपको SUBSTR()
का उपयोग करके पहले तीन भागों को उलटना होगा। और CONCAT()
इस तरह:
SELECT CONCAT(SUBSTR(UUID(), 15, 4), '-', SUBSTR(UUID(), 10, 4),
'-', SUBSTR(UUID(), 1, 8))
उपज:
11e1-8f00-45f9b8d6
आप स्पष्ट रूप से इस तरह के फ़ंक्शन को डिफ़ॉल्ट मान के रूप में उपयोग नहीं कर सके, इसलिए आपको इसे कोड में सेट करना होगा, लेकिन यह एक गारंटीकृत अद्वितीय अस्थायी रूप से आदेशित मूल्य है। UUID() सेकंड (घड़ी चक्र) की तुलना में बहुत निचले स्तर पर काम करता है, इसलिए इसकी गारंटी प्रत्येक कॉल के साथ अद्वितीय होती है और इसमें ओवरहेड कम होता है (auto_increment की तरह कोई लॉकिंग नहीं)।
डेटाबेस सर्वर पर UUID () का उपयोग करना एक समान फ़ंक्शन का उपयोग करने के लिए पसंद किया जा सकता है, जैसे कि PHP का microtime()
एप्लिकेशन सर्वर पर कार्य करता है क्योंकि आपका डेटाबेस सर्वर अधिक केंद्रीकृत है। आपके पास एक से अधिक एप्लिकेशन (वेब) सर्वर हो सकते हैं, जो टकराने वाले मान उत्पन्न कर सकते हैं, और माइक्रोटाइम () अभी भी अद्वितीय मानों की गारंटी नहीं देता है।