您好,登錄后才能下訂單哦!
如果還沒有創建表,那么使用下面的方式創建就可以了。
create table testuu(
id varchar2(2000) default sys_guid(),
name varchar2(2000)) ;
如果已經創建了表,那么先保證你原有的主鍵ID沒有任何實際的業務意義,要修改的話使用下面的方法。
alter table testuu modify id default sys_guid() ;
update testuu set id = sys_guid ();
Oracle新建系統表時,要求主鍵為32位uuid,猜測Oracle肯定會提供相關的函數。
翻閱相關文檔,果然發現Oracle提供的函數 sys_guid() 用于獲取32位uuid,簡單使用為
select sys_guid() from dual;
該函數返回32位的uuid為大寫,可以使用 lower(sys_guid()) 轉為小寫.
Oracle中生成跨系統的唯一識別符UUID非常方便,比生成序列還簡單,直接用sys_guid()就行,
例如 select sys_guid() from dual 會產生一個跟MAC地址、生成時間相關的一個32位16進制的隨機數。
數據類型是 raw(16) 有32個字符。
它的生成機制足以保證全球所有系統產生的海量guid重復可能性非常小。這在AIXM概念中非常重要。
根據時間拼接:
select lower(sys_guid())||to_char(sysdate,'yyyyMMddHh34miss') from dual;
如果要讓返回的uuid滿足標準格式,可利用如下函數實現:
CREATE OR REPLACE FUNCTION
get_uuid RETURN VARCHAR IS guid VARCHAR (50);
BEGIN guid := lower(RAWTOHEX(sys_guid()));
RETURN substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12);
END get_uuid ;
SQL> select get_uuid from dual ;
a8f662b8-6e7a-13fe-e040-970a437c6bd7
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。