Skip to content

PostgreSQL UUID 数据类型介绍 ​

本文介绍了 PostgreSQL UUID 数据类型以及如何使用 UUID 作为主键。

UUID 是一种通用唯一标识符,它由 32 为十六进制数字以及连字符组成。

与 SERIAL,标识列,和 序列 相比, UUID 具有全局的唯一性,而不是数据库中的唯一性。 UUID 更适合在集群环境中作为唯一标识符。

PostgreSQL 支持 UUID 数据类型,以存储 UUID 数据。

生成 UUID 值 ​

要在 PostgreSQL 中生成 UUID,请使用 gen_random_uuid() 函数,如下:

sql
SELECT gen_random_uuid();
bash
           gen_random_uuid
--------------------------------------
 d1f7b7c1-c0b6-4707-aa17-5055b09b3ae8
(1 row)

gen_random_uuid() 函数生成一个 v4 版本的 UUID,要生成其他版本的 UUID,请使用 uuid-ossp 模块,并使用它的函数:

有关 UUID 生成函数的更多信息,请查看uuid-ossp模块文档。

注意,gen_random_uuid() 函数在 PostgreSQL v13 及以后的版本中才能使用。在之前的版本中,请使用 uuid-ossp 模块提供的函数生成 UUID。

PostgreSQL UUID 实例 ​

在本示例中,您将创建一个 fruits 表,其主键是 UUID 数据类型。

使用以下语句创建 fruits 表:

sql
CREATE TABLE fruits (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  name VARCHAR NOT NULL
);

在 fruits 表中, id 列的数据类型是 UUID,并且由 gen_random_uuid() 函数提供默认值。

使用下面的语句插入一些数据到 fruits 表中:

sql
INSERT INTO fruits (name)
VALUES
    ('Apple'),
    ('Peach'),
    ('Banana')
RETURNING *;
bash
                  id                  |  name
--------------------------------------+--------
 980dd890-f7fe-4fff-999d-873516108b2e | Apple
 617c7809-cec6-44aa-9ce3-59a988e5bf35 | Peach
 98edf248-42a2-496d-9b4a-16472f6f0a00 | Banana
(3 rows)

如您所见,该 id 列已由 gen_random_uuid() 函数生成的 UUID 值填充。

结论 ​

本文介绍了 PostgreSQL UUID 数据类型以及如何使用 UUID 作为主键。