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';
注意事项
确保 uuid-ossp 扩展已安装
UUID 占用 16 字节存储空间
随机 UUID (v4) 有极小的碰撞概率
作为主键时,索引效率可能不如自增整数,但适合分布式系统;
uuid类型是大小写敏感的,通常使用小写字母;
uuid类型的数据长度固定为36个字符(包括连字符);
重庆思庄PG数据库技术分享-PG模式 中 UUID 的使用
张小明
前端开发工程师
LangFlow社会问题调研问卷设计助手
LangFlow社会问题调研问卷设计助手 在社会科学领域,研究者常常面临一个现实困境:如何快速、科学地设计出结构合理、覆盖全面的调查问卷?传统方式依赖专家经验,周期长、主观性强,尤其面对突发社会议题时,响应…
ESP32 OTA固件更新:项目应用与完整示例
ESP32 OTA固件更新:从原理到实战的完整指南你有没有遇到过这样的场景?设备已经部署在客户现场,甚至装进了天花板或埋进了墙里,突然发现一个致命Bug。传统做法是派人上门拆机、接线、烧录——成本高、效率低、用户体验差。而如果你…
LangFlow化学反应方程式配平辅助
LangFlow化学反应方程式配平辅助 在中学化学课堂上,一个学生盯着黑板上的“Fe O₂ → Fe₂O₃”皱眉苦思:左边1个铁原子,右边却是2个;氧原子从2变成3——这怎么配?传统教学依赖教师逐条讲解、学生反复练习,…
使用Qtimer::singleShot进行非阻塞延时操作实战案例
用QTimer::singleShot写出流畅不卡顿的 Qt 程序:从防抖到状态过渡的实战指南你有没有遇到过这样的场景?用户点了个按钮,界面瞬间“死”了三秒;登录失败后立即又能点击,结果请求发了五六次;启动页一闪而过&a…
深入浅出SystemVerilog:结构化流程控制语句系统学习
深入理解SystemVerilog流程控制:从语法到工程实践的跃迁你有没有遇到过这样的情况?写了一个状态机,综合后发现生成了意外的锁存器;或者在testbench里跑仿真时,某个forever循环卡死导致整个波形“冻结”;又或…