Oracle的SYS_GUID()函數(shù)用法及說明
前言
今天在代碼中發(fā)現(xiàn)了Oracle的SYS_GUID() 函數(shù)作為主鍵的用法,于是來記錄下~
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、函數(shù)解釋
SYS_GUID (),是Oracle 8i 后提供的函數(shù)。
SYS_GUID產(chǎn)生并返回一個全球唯一的標識符(原始值)由16個字節(jié)組成。
在大多數(shù)平臺,生成的標識符由主機標符,執(zhí)行函數(shù)的進程或者線程標識符,和進程或線程的一個非重復(fù)的值(字節(jié)序列)。
二、查看方式
select sys_guid() from dual;
返回:長度為32位的字符串,包括0-9和大寫A-F。
但是你會發(fā)現(xiàn)此時查出的是亂碼,那該怎么辦呢?

亂碼就要使用rawtohex()函數(shù)方法啦~
select rawtohex(sys_guid()) from dual;

吶!現(xiàn)在就展示正常了。
三、使用場景
1.建表時作為主鍵
如下(示例):
create table student ( student_id raw(16) default sys_guid() primary key, student_name varchar2(100) not null );
2.新增數(shù)據(jù)時填充主鍵
如下(示例):
insert into student(student_id, student_name) values (SYS_GUID(), '小明');
四、SYS_GUID作為主鍵的優(yōu)缺點
1.優(yōu)點
(1)序列從起點開始進行自增,但只能保持在單個實例里唯一。
因此不適合用作并行或遠程環(huán)境的主鍵,因為各自環(huán)境里的序列可能會生成相同的數(shù)字,從而導致沖突的發(fā)生。
而SYS_GUID會保證它創(chuàng)建的標識符在每個數(shù)據(jù)庫里都是唯一的。
(2)序列必須是DML陳述式的一部分,因此它需要一個到數(shù)據(jù)庫的往返過程(否則它就不能保證其值是唯一的)。
SYS_GUID不需要對數(shù)據(jù)庫進行訪問的時間戳和機器標識符,這就節(jié)省了查詢的消耗。
2.缺點
(1)從空間上,相同條件下,使用SYS_GUID做主鍵比用Sequence做主鍵,表多消耗了空間。
(2)用SYS_GUID使用時相對不太方便,必須(手動)輸入或者通過腳本來填充相應(yīng)的字段。
總結(jié)
總的來說,還是利大于弊啦~
hextoraw():十六進制字符串轉(zhuǎn)換為raw;rawtohex():將raw串轉(zhuǎn)換為十六進制;lower():將大寫轉(zhuǎn)為小寫;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
oracle ORA-00031:session marked for kill(標記要終止的會話)解決方法
這篇文章主要介紹了oracle ORA-00031:session marked for kill(標記要終止的會話)解決方法 ,需要的朋友可以參考下2015-12-12
Windows10系統(tǒng)中Oracle完全卸載正確步驟
自己剛到公司就是熟悉數(shù)據(jù)庫的安裝卸載,所以分享一下學到的,下面這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)中Oracle完全卸載正確步驟的相關(guān)資料,文章通過圖文介紹的非常詳細,需要的朋友可以參考下2023-04-04
Oracle查詢當前的crs/has自啟動狀態(tài)實例教程
當我們開啟或者關(guān)閉自啟動后,我們?nèi)绾尾榭串斍癈RS 是處于enable還是處于disable中呢?下面這篇文章主要給大家介紹了關(guān)于Oracle如何查詢當前的crs/has自啟動狀態(tài)的相關(guān)資料,需要的朋友可以參考下2018-11-11
Oracle固定執(zhí)行計劃之SQL PROFILE概要文件詳解
概要文件,就是一份描述如何使用系統(tǒng)的資源(主要是CPU資源)的配置文件,這篇文章主要介紹了Oracle固定執(zhí)行計劃之SQL PROFILE概要文件 ,需要的朋友可以參考下2018-10-10
處理Oracle監(jiān)聽程序當前無法識別連接描述符中請求的服務(wù)異常(ORA-12514)
這篇文章介紹了處理Oracle監(jiān)聽程序當前無法識別連接描述符中請求的服務(wù)異常(ORA-12514),對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-12-12
Oracle 數(shù)據(jù)庫特殊查詢總結(jié)
這篇文章主要介紹了Oracle 數(shù)據(jù)庫特殊查詢總結(jié)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08
Win7 64位下PowerDesigner連接64位Oracle11g數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了Win7 64位下PowerDesigner連接64位Oracle11g數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
oracle聯(lián)機數(shù)據(jù)庫備份詳解
oracle數(shù)據(jù)庫維護中,備份或恢復(fù)是重中之重的問題,本文就講一下oracle聯(lián)機數(shù)據(jù)庫備份的方法2013-11-11

