欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle的SYS_GUID()函數(shù)用法及說(shuō)明

 更新時(shí)間:2023年07月29日 15:27:57   作者:柚子貓嶼  
這篇文章主要介紹了Oracle的SYS_GUID()函數(shù)用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

今天在代碼中發(fā)現(xiàn)了Oracle的SYS_GUID() 函數(shù)作為主鍵的用法,于是來(lái)記錄下~

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、函數(shù)解釋

SYS_GUID (),是Oracle 8i 后提供的函數(shù)。

SYS_GUID產(chǎn)生并返回一個(gè)全球唯一的標(biāo)識(shí)符(原始值)由16個(gè)字節(jié)組成。

在大多數(shù)平臺(tái),生成的標(biāo)識(shí)符由主機(jī)標(biāo)符,執(zhí)行函數(shù)的進(jìn)程或者線程標(biāo)識(shí)符,和進(jìn)程或線程的一個(gè)非重復(fù)的值(字節(jié)序列)。

二、查看方式

select sys_guid() from dual;

返回:長(zhǎng)度為32位的字符串,包括0-9和大寫A-F。

但是你會(huì)發(fā)現(xiàn)此時(shí)查出的是亂碼,那該怎么辦呢?

亂碼

亂碼就要使用rawtohex()函數(shù)方法啦~

select rawtohex(sys_guid()) from dual;

正常

吶!現(xiàn)在就展示正常了。

三、使用場(chǎng)景

1.建表時(shí)作為主鍵

如下(示例):

create table student
(
student_id raw(16) default sys_guid() primary key,
student_name varchar2(100) not null
);

2.新增數(shù)據(jù)時(shí)填充主鍵

如下(示例):

insert into student(student_id, student_name)
values (SYS_GUID(), '小明');

四、SYS_GUID作為主鍵的優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

(1)序列從起點(diǎn)開始進(jìn)行自增,但只能保持在單個(gè)實(shí)例里唯一。

因此不適合用作并行或遠(yuǎn)程環(huán)境的主鍵,因?yàn)楦髯原h(huán)境里的序列可能會(huì)生成相同的數(shù)字,從而導(dǎo)致沖突的發(fā)生。

而SYS_GUID會(huì)保證它創(chuàng)建的標(biāo)識(shí)符在每個(gè)數(shù)據(jù)庫(kù)里都是唯一的。

(2)序列必須是DML陳述式的一部分,因此它需要一個(gè)到數(shù)據(jù)庫(kù)的往返過(guò)程(否則它就不能保證其值是唯一的)。

SYS_GUID不需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)的時(shí)間戳和機(jī)器標(biāo)識(shí)符,這就節(jié)省了查詢的消耗。

2.缺點(diǎn)

(1)從空間上,相同條件下,使用SYS_GUID做主鍵比用Sequence做主鍵,表多消耗了空間。

(2)用SYS_GUID使用時(shí)相對(duì)不太方便,必須(手動(dòng))輸入或者通過(guò)腳本來(lái)填充相應(yīng)的字段。

總結(jié)

總的來(lái)說(shuō),還是利大于弊啦~

  • hextoraw():十六進(jìn)制字符串轉(zhuǎn)換為raw;
  • rawtohex():將raw串轉(zhuǎn)換為十六進(jìn)制;
  • lower():將大寫轉(zhuǎn)為小寫;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論