openGauss如何生成uuid

uuid_generate_v4()、gen_random_uuid这些我试了下都是不存在,uuid-ossp这个插件我看也没法安

是只有通过自定义函数来实现这一条路子了吗

openGauss 本身没有内建的 gen_random_uuid()uuid_generate_v4() 函数,但可以通过以下两种方式获得 UUID:

  1. 安装扩展(需系统管理员权限)

    如果服务器已打包了 uuid-ossp 扩展,先执行

   CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

然后即可直接调用

   SELECT uuid_generate_v4();          -- RFC 4122 v4 随机 UUID
   SELECT uuid_generate_v1();          -- v1 时间+MAC 版本
  1. 若无法安装扩展,可用内置函数组合生成 32 位十六进制字符串,再转为 UUID 类型。社区常用写法如下 :
   CREATE OR REPLACE FUNCTION gen_uuid()
   RETURNS uuid
   LANGUAGE sql
   AS $$
       SELECT md5(random()::text || clock_timestamp()::text)::uuid;
   $$;

   -- 使用示例
   SELECT gen_uuid();

该函数每次返回一个 128 位的随机 UUID,格式为 a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11,可直接插入 UUID 字段 。