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