Oracle生成不重复字符串 sys_guid()与Mysql生成唯一值

 (1)oracle生成不重复字符串 

在oracle8i以后提供了一个生成不重复的数据的一个函数sys_guid()一共32位,生成的依据主要是时间和机器码,具有世界唯一性,类似于java中的UUID(都是世界唯一的)。

其优点就是生成的字符串是唯一的,但其和UUID有同样的弊端:生成的序列过长并且没有规律不方便记忆。

其应用场景:当数据库某字段设置为唯一,则可用次生成(比如主键);

获取方式 select sys_guid() from dual ;

例如:

INSERT INTO usertable (id,project_id,subject_num,create_time)

selectsys_guid(),#{projectId},COMID,sysdate from User

where industry = ‘1111111’


(2)MySQL生成不重复字符串

在 MySQL 中,可以有如下几种途径实现唯一值:

1.自增序列

2.UUID() 函数

3.程序自定义

UUID 基于 16 进制,由 32 位小写的 16 进制数字组成,如下:

aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

比如123e4567-e89b-12d3-a456-426655440000就是一个典型的 UUID。

        MySQL实现了 UUID,并且提供 UUID() 函数方便用户生成 UUID。在 MySQL 的 UUID() 函数中,前三组数字从时间戳中生成,第四组数字暂时保持时间戳的唯一性,第五组数字是一个 IEEE 802 节点标点值,保证空间唯一。使用 UUID() 函数,可以生成时间、空间上都独一无二的值。据说只要是使用了 UUID,都不可能看到两个重复的 UUID 值。当然,这个只是在理论情况下。




你可能感兴趣的:(积累)