سؤال

لدي مشروع Oracle سيكون مناسبًا لاستخدام المعرفات الفريدة العمومية (GUIDs) كمفتاح.لقد وجدت المقتطف التالي

SET SERVEROUTPUT ON
BEGIN
FOR indx IN 1 .. 5
LOOP
DBMS_OUTPUT.put_line ( SYS_GUID );
END LOOP;
END;
/

من http://feuerthinkts.blogspot.com/2006/02/watch-out-for-sequential-Oracle-guids.html

عندما أقوم بتشغيله على قاعدة البيانات الخاصة بي (لقد جربته على الإصدارين 10g والإصدار 11) أحصل على نتائج مثل

64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0

أي.القيمة لا تتغير أبدا!هل هناك شيء يجب علي فعله لإعداد هذا للعمل كما هو متوقع؟

يحرر:أنا لست ملتزمًا جدًا - فالمعرفات الفريدة العمومية (GUIDs) تتغير، ولكن يبدو أنني أعاني من مشكلة المعرفات الفريدة العمومية (GUID) التسلسلية التي يتحدث عنها الرابط أعلاه.

هل كانت مفيدة؟

المحلول

يبدو طيب.من الوصف:

يقوم SYS_GUID بإنشاء وإرجاع معرف فريد من نوعه عالميًا (القيمة الخام) يتكون من 16 بايت.في معظم المنصات ، يتكون المعرف الذي تم إنشاؤه من معرف مضيف ، أو معرف عملية أو مؤشر ترابط للعملية أو مؤشر ترابط يستدعي الوظيفة ، و غير متكرر قيمة (تسلسل البايت) لتلك العملية أو الخيط.

من مثالك:

64FE4083D6Bأ7CB4E0400F0A0E0A18B0
64FE4083D6Bب7CB4E0400F0A0E0A18B0
64FE4083D6Bج7CB4E0400F0A0E0A18B0
64FE4083D6Bد7CB4E0400F0A0E0A18B0
64FE4083D6Bه7CB4E0400F0A0E0A18B0

لم يذكر أحد أي شيء عن توزيع قيم GUID هذه.ينبغي أن تكون غير متكررة، وهم كذلك.إلا إذا كنت تحصل على نفس الناتج بالضبط في كل مرة.

نصائح أخرى

لا تتغير قيمة ....

           *
64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0
           *
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top