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 值。當然,這個只是在理論情況下。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章