当前位置: 首页 > news >正文

第8节-PostgreSQL数据类型-UUID

摘要:在本教程中,你将学习如何使用 PostgreSQLUUID 类型存储UUID 值。

PostgreSQL UUID 类型入门

UUID 代表通用唯一标识符,是由 RFC 4122 定义的标准。

UUID 长128位,无需中央注册。它保证了在不同系统和时间上的唯一性。PostgreSQL 使用 UUID 类型来存储 UUID 值。

以下是定义 UUID 列的语法:

CREATE TABLE table_name (column_name UUID,...
);

通常,我们使用 UUID 作为表的主键列的类型:

CREATE TABLE table_name (column_name UUID PRIMARY KEY,...
);

原因是 UUID 具有唯一性,且不会向公众暴露内部序列。

例如,如果您有一个ID为 10000 的客户,这可能会暴露您的系统有 10000 个客户。

当竞争对手知道你拥有的客户数量时,他们可能会利用这些信息来获得竞争优势。

使用 UUID 作为主键时,PostgreSQL 和应用程序都可以生成它,同时保持唯一性。

例如,你可以生成一个密钥( UUID )来插入新客户,并使用该密钥创建客户档案。

// Generate UUID for a customer
// Use UUID to create a customer profile

如果使用标识列,您必须先插入新客户,获取 PostgreSQL 生成的 ID ,然后使用该 ID 创建客户档案。

生成 UUID 值的函数

PostgreSQL 提供了 gen_random_uuid(),允许您生成一个 UUID 值。例如,以下语句生成一个 UUID 值:

SELECT gen_random_uuid();

输出:

           gen_random_uuid
--------------------------------------68f375c8-1b55-4558-a176-72a38a520149

每次执行该函数时,它都会生成一个新的 UUID 值。

你可以使用 gen_random_uuid() 函数为 UUID 主键列生成默认值:

CREATE TABLE table_name(user_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),...
);

PostgreSQL UUID 数据类型示例

首先,创建一个表,名为 customers ,该表使用 UUID 类型作为主键列:

CREATE TABLE customers (customer_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),name VARCHAR(255) NOT NULL
);

customers 表中,customer_id 列是主键列。customer_id 列的类型为 UUID

当你向表中插入一行数据时,PostgreSQL 会通过调用 gen_random_uuid() 函数,为 customer_id 列自动生成 UUID 值。 (注:为避免标签被误解析,在标签符号与内容间添加了空格,实际使用时可去除。)

其次,向 customers 表中插入数据:

INSERT INTOcustomers (name)
VALUES('ABC Corp.'),('XYZ Inc.') 
RETURNING *;

输出:

             customer_id              |   name
--------------------------------------+-----------f1af387f-ac03-4784-bbcb-b564a88cd682 | ABC Corp.aae1c410-06ff-48df-818b-dbed92a1efbc | XYZ Inc.

总结

  • 为表的主键列使用 UUID 数据类型。
  • 使用 gen_random_uuid() 函数生成 UUID 值。
http://www.dtcms.com/a/394811.html

相关文章:

  • S2多维可视分析表格解析
  • 面经分享--百度开发一面
  • 第15讲 机器学习的数学
  • NestJS-身份验证JWT的使用以及登录注册
  • ChatGPT “影子泄露” 漏洞:黑客可隐秘窃取电子邮件数据
  • Coze Stdio模型配置
  • DSC 参数ARCH_HANG_FLAG对集群的影响
  • Android Jetpack Compose 从入门到精通
  • 【数据结构与算法-Day 31】图的遍历:深度优先搜索 (DFS) 详解,一条路走到黑的智慧
  • C#练习题——LinkedList 的进阶应用与测试
  • 手机CPU型号
  • jdbc相关知识
  • yolov12 导出onnx
  • Linux 环境变量与程序地址空间
  • LeetCode:48.路径总和Ⅲ
  • 计算机网络的性能
  • 深度学习笔试选择题:题组1
  • 统一配置管理根据不同域名展现不同信息或相近信息 Vue3类单例模式封装
  • 人工智能深度学习——循环神经网络(RNN)
  • 单例模式指南:全局资源的安全访问
  • 容器化 Tomcat 应用程序
  • Vue Router【前端】
  • 数据结构——受限线性表之栈
  • 数据结构(1)------ 三要素
  • BaaS(Backend as a Service)概述、平台、项目
  • 区间dp,数据结构优化dp等5种dp,各种trick深度讲解
  • 数据结构笔试选择题:题组1
  • 前端基础:从0到1实现简单网页效果(一)
  • 数据结构|图论:从数据结构到工程实践的核心引擎
  • AI赋能个人效能提升:实战演练工作规划、项目复盘与学习发展