2009-03-13 26 views
12

GUIDをキーとして使用するのに適したOracleプロジェクトがあります。私は私が私のデータベースに対してそれを実行するとhttp://feuerthoughts.blogspot.com/2006/02/watch-out-for-sequential-oracle-guids.htmlOracle SYS_GUIDは変更されません

から、次のスニペット

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

を見つけた私が手(私はバージョン10gとバージョン11でそれを試してみました)出力のような

64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 

すなわち、値は変わらない!期待どおりにこれを設定するために何かしなければならないことはありますか?

編集:私はそれほど慎重ではありません - GUIDは変更されていますが、上記のリンクが話している逐次GUIDの問題に苦しんでいるようです。

答えて

16

と思われます。説明から:

SYS_GUIDを生成して、16バイトで構成される グローバル一意識別子(RAW値) を返します。最も プラットフォーム上で、生成された識別子 はそのプロセス またはスレッドのホスト識別子、 関数を呼び出すプロセスまたはスレッドの プロセスまたはスレッド識別子、および非反復値 (バイトのシーケンス)で構成します。あなたの例から

 
64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 

誰もがこれらのGUID値の分布については何も言及していません。彼らは反復してはならないし、そうでなければなりません。毎回まったく同じ出力が得られない限り。

+1

グッド目!私はこれが私が投稿したと思っていることが話している問題だと思う。 –

15

値が変化しない....

  * 
64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 
      * 
+1

ありがとうございます - 私は今、愚かな気がします... –

+1

:-)私たちはすべてそこにいました....あなたは1時間何かを見つめて、同僚が5秒間に点在する何かを見つけられません。 – cagcowboy

+1

フォーマットをうまく使います。 –

関連する問題