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

Posted on 2020-07-06 15:35  'alt+/'  阅读(1378)  评论(0编辑  收藏  举报

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

Copyright © 2024 'alt+/'
Powered by .NET 8.0 on Kubernetes