【oracle】如何利用Oracle的sys_guid()函数生成uuid主键,实际使用请加上前缀!


Java中有java.util.UUID来生成不重复的32位字串,oracle的sys_guid()函数也提供了相似功能,两者都可以用来生成主键。

首先表的id得定义成varchar2(32)或是nvarchar2(32)的形式:

create table emp13(
    id varchar2(32),
    name nvarchar2(20),
    primary key(id)
)

之后就可以往其中插值了:

insert into emp13(id,name) values(sys_guid(),'Andy');    
insert into emp13(id,name) values(sys_guid(),'Bill');
insert into emp13(id,name) values(sys_guid(),'Cindy');
insert into emp13(id,name) values(sys_guid(),'Douglas');

插完了可以看结果:

SQL> select * from emp13;

ID                               NAME
-------------------------------- ----------------------------------------
076CF701A507417CBDFD3931B0241E2B Andy
E1D5F13DDDC047ACB4C2AEDF1DB9762F Bill
2D6F5D893791457091F1C896344CF0B4 Cindy
C6BA6C13DCD14CB1AF5F3865F005022D Douglas

Mabatis门徒可以在xml或注解的SQL中直接使用此函数。

 

PS:若是多表都使用sys_guid()作为主键,建议手动加上前缀,如task_XXXX, job_XXXX,当如这么做了以后字段长度也要做出相应调整,32位当扩至40位或更长,

使用上如:

insert into emp13(id,name) values('emp_'||sys_guid(),'Douglas');

或是

select 'emp_'||sys_guid() from dual

这样做的好处是看到ID时通过前缀就能知道属于哪张表。 

END


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM