मैं टकराव की संभावना से परेशान नहीं होगा। बस एक यादृच्छिक स्ट्रिंग उत्पन्न करें और जांचें कि यह मौजूद है या नहीं। यदि ऐसा होता है, तो फिर से प्रयास करें और आपको इसे एक-दो बार और अधिक करने की आवश्यकता नहीं है, जब तक कि आपके पास पहले से ही बड़ी संख्या में प्लेटों को असाइन न किया गया हो।
शुद्ध (My)SQL में 8-वर्ण लंबी छद्म-यादृच्छिक स्ट्रिंग उत्पन्न करने का एक अन्य समाधान:
SELECT LEFT(UUID(), 8);
आप निम्न कोशिश कर सकते हैं (छद्म कोड):
DO
SELECT LEFT(UUID(), 8) INTO @plate;
INSERT INTO plates (@plate);
WHILE there_is_a_unique_constraint_violation
-- @plate is your newly assigned plate number
चूंकि इस पोस्ट को एक अप्रत्याशित स्तर का ध्यान मिला है, इसलिए मैं एडीटीसी की टिप्पणी :कोड का उपरोक्त भाग काफी गूंगा है और अनुक्रमिक अंक उत्पन्न करता है।
थोड़ी कम बेवकूफी के लिए इसके बजाय कुछ इस तरह की कोशिश करें:
SELECT LEFT(MD5(RAND()), 8)
और सही (क्रिप्टोग्राफिक रूप से सुरक्षित) यादृच्छिकता के लिए, RANDOM_BYTES()
का उपयोग करें के बजाय RAND()
(लेकिन तब मैं इस तर्क को अनुप्रयोग परत तक ले जाने पर विचार करूंगा)।