DB2生成UUID, CONCAT (HEX (RAND ()), HEX (RAND ())) 排坑


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


免责声明!

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



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