1. 启用 UUID 扩展
首先需要启用 uuid-ossp 扩展:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";2. 生成 UUID 的函数
uuid_generate_v1() - 基于时间和 MAC 地址
SELECT uuid_generate_v1();使用 uuid_generate_v4() - 完全随机生成
SELECT uuid_generate_v4();使用 uuid_generate_v3() 和 uuid_generate_v5() - 基于命名空间和名称的哈希
SELECT uuid_generate_v3(uuid_ns_url(), 'https://example.com');
SELECT uuid_generate_v5(uuid_ns_url(), 'https://example.com');3. 创建带有 UUID 列的表
CREATE TABLE example_table (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);4. 插入数据
自动生成 UUID
INSERT INTO example_table (name) VALUES ('Test Name');手动指定 UUID
INSERT INTO example_table (id, name)
VALUES ('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'Manual UUID');5. 查询和比较 UUID
-- 查询特定 UUID
SELECT * FROM example_table WHERE id = 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11';-- 比较 UUID
SELECT * FROM example_table WHERE id > 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11';6. 在应用程序中使用
Java 示例
import java.util.UUID;
// 生成 UUID
UUID uuid = UUID.randomUUID();
// 在 SQL 中使用
PreparedStatement stmt = connection.prepareStatement(
"INSERT INTO example_table (id, name) VALUES (?, ?)");
stmt.setObject(1, uuid);
stmt.setString(2, "Java Generated");
stmt.executeUpdate();7. 注意事项
确保
uuid-ossp扩展已安装UUID 占用 16 字节存储空间
随机 UUID (v4) 有极小的碰撞概率
作为主键时,索引效率可能不如自增整数,但适合分布式系统;
uuid类型是大小写敏感的,通常使用小写字母;uuid类型的数据长度固定为36个字符(包括连字符);
最后修改时间:2025-03-27 15:22:48
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




