溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

oracle數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題怎么解決

發(fā)布時(shí)間:2023-05-04 15:13:15 來(lái)源:億速云 閱讀:135 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇“oracle數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題怎么解決”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“oracle數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題怎么解決”文章吧。

oracle數(shù)據(jù)庫(kù)id自增及生成uuid

oracle數(shù)據(jù)庫(kù)中id自增的方法:首先創(chuàng)建一個(gè)sequence序列

CREATE SEQUENCE   xxx_SEQUENCE --創(chuàng)建一個(gè)序列
INCREMENT BY 1 --每次增加1
START WITH 1 --開(kāi)始值為 1
NOMAXvalue --不設(shè)置最大值,即最大值
NOCYCLE --不循環(huán)
NOCACHE --沒(méi)有緩存限制

然后給相應(yīng)要自增的數(shù)據(jù)庫(kù)表 添加一個(gè)觸發(fā)器,每次插入前ID自增1.

CREATE OR REPLACE  TRIGGER xxx_TRIGGER BEFORE --創(chuàng)建一個(gè)觸發(fā)器
insert ON  xxx FOR EACH ROW --在xxx表開(kāi)始插入前 每一行 
begin --開(kāi)始執(zhí)行
select xxx_SEQUENCE.nextval into:New.ID from dual;--執(zhí)行插入語(yǔ)句前先給id列插入一個(gè)序列的next
end;

這樣當(dāng)插入 insert into xxx () values('')時(shí),不需要給id列插值,id列會(huì)自動(dòng)生成排序。

插入uuid也類(lèi)似,給相應(yīng)表添加觸發(fā)器即可:

CREATE OR REPLACE TRIGGER QLF_QL_CFDJ_TRIGGER
BEFORE INSERT ON QLF_QL_CFDJ
FOR EACH ROW
DECLARE
BEGIN
  IF :NEW.ID IS NULL THEN
    :NEW.ID:=SYS_GUID();
  END IF; END QLF_QL_CFDJ_TRIGGER; --最后一個(gè)end 最好和第二個(gè)end放在一行,不然有可能報(bào)錯(cuò)

oracle中自動(dòng)生成id的函數(shù)以及注意事項(xiàng)

oracle中自動(dòng)生成id的函數(shù) :sys_guid()

SELECT sys_guid() FROM aTable a ;

注意:上面這個(gè)是可以自動(dòng)生成id,但是很多時(shí)候自動(dòng)生成的id會(huì)出現(xiàn)亂碼

原因:SYS_GUID 以16位RAW類(lèi)型值形式返回一個(gè)全局唯一的標(biāo)識(shí)符,而我們一般用的是十六進(jìn)制的字符

所有用以下的解決方式:

-- 用大寫(xiě)或者小寫(xiě)函數(shù)都能解決 : 因?yàn)榇笮?xiě)會(huì)把raw串自動(dòng)轉(zhuǎn)換為十六進(jìn)制
select lower(sys_guid()) from aTable a;
-- 或者 
select upper(sys_guid()) from aTable a;
-- 個(gè)人推薦這種:因?yàn)樗话阎缔D(zhuǎn)換成大小寫(xiě)
-- rawtohex函數(shù): 將raw串轉(zhuǎn)換為十六進(jìn)制
select rawtohex(sys_guid()) from aTable a;
-- 還有
select lower(rawtohex(sys_guid())) from aTable a;

以上就是關(guān)于“oracle數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題怎么解決”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI