(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 值。当然,这个只是在理论情况下。