Oracle Databaseではファンクション
SYS_GUIDを呼び出すことにより、一意の識別子を生成できます。戻り値はRAW(16)の値です。ビット数は128ビット(8 x 16 = 128)になり、UUID version 4と同じです。
古いOracle DatabaseではSYS_GUIDが返す値の一意性に問題あったこともあるようですが(ChatGPTに聞くと教えてくれます)、今はそのようなことは無さそうです。
SYS_GUIDが返す値がUUID version 4準拠でないのは、RFC 4122の以下の条件を満たしていないためです。
- 13バイト目の上位4ビットが 0100(= version 4)
- 9バイト目の上位2ビットが 10(= variant)
UUID version 4に準拠した識別子を返すファンクションgenerate_uuid_v4を作成してみました。元はOpenAI GPT-4oで作成しましたが、ソースと思われるStackoverflowの記事やRFC 4122を確認して以下のコードに落ち着きました。
今回の記事は以上になります。
完