1. 程式人生 > >Oracle生成不重複字串 sys_guid()與Mysql生成唯一值

Oracle生成不重複字串 sys_guid()與Mysql生成唯一值

 (1)oracle生成不重複字串 

在oracle8i以後提供了一個生成不重複的資料的一個函式sys_guid()一共32位,生成的依據主要是時間和機器碼,具有世界唯一性,類似於java中的UUID(都是世界唯一的)。

其優點就是生成的字串是唯一的,但其和UUID有同樣的弊端:生成的序列過長並且沒有規律不方便記憶。

其應用場景:當資料庫某欄位設定為唯一,則可用次生成(比如主鍵);

獲取方式 select sys_guid() from dual ;

例如:

INSERT INTO usertable (id,project_id,subject_num,create_time)

selectsys_guid(),#{projectId},COMID,sysdate from User

where industry = ‘1111111’

(2)MySQL生成不重複字串

在 MySQL 中,可以有如下幾種途徑實現唯一值:

1.自增序列

2.UUID() 函式

3.程式自定義

UUID 基於 16 進位制,由 32 位小寫的 16 進位制數字組成,如下:

aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

比如123e4567-e89b-12d3-a456-426655440000就是一個典型的 UUID。

        MySQL實現了 UUID,並且提供 UUID() 函式方便使用者生成 UUID。在 MySQL 的 UUID() 函式中,前三組數字從時間戳中生成,第四組數字暫時保持時間戳的唯一性,第五組數字是一個 IEEE 802 節點標點值,保證空間唯一。使用 UUID() 函式,可以生成時間、空間上都獨一無二的值。據說只要是使用了 UUID,都不可能看到兩個重複的 UUID 值。當然,這個只是在理論情況下。