DB2中没有提供生成UUID的方法,一般我们常用的是CONCAT (HEX (RAND ()), HEX (RAND ())) 来生成UUID,但是大量生成的时候会产生重复数据,导致我们的唯一索引报错。
本次采用java的自定义函数方法来生成UUID,即用java代码的生成UUID方法来生成DB2的UUID
具体方法
很多数据库都提供了UUID/GUID函数,可DB2却没有,不知道IBM怎么想的,好在DB2提供的了自定义函数接口,而且支持JAVA,既然没有,提供JAVA自定义函数,也好啊,用JAVA写个UUID太容易了,几行代码,下面自己弄个UUID吧
1. JAVA类
1 import java.util.UUID; 2 import COM.ibm.db2.app.UDF; 3 4 public class UDFUUID extends UDF{ 5 public static String uuid(){ 6 UUID uuid = UUID.randomUUID(); 7 //去掉中间的分隔 8 String uid = uuid.toString().replaceAll("-", ""); 9 return uid; 10 } 11 }
2.把JAVA类放到DB2函数库目录下去,放到IBM\SQLLIB\FUNCTION下
3.用DB2带的jdk编译一下,
IBM\SQLLIB\java\jkd\bin\javac UDFUUID.java
4.注册函数
1 drop function uuid; 2 create function uuid() 3 returns char(32) 4 fenced 5 variant 6 no sql 7 language java 8 parameter style java 9 external name 'UDFUUID!uuid';
5.使用看看
values(uuid());
以后想怎么用就怎么用吧
参考资料:https://www.cnblogs.com/runningwater-table/p/4574768.html