PostgreSQL UUID 数据类型介绍

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

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

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

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

生成 UUID 值

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

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

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

  • uuid_generate_v1()
  • uuid_generate_v1mc()
  • uuid_generate_v3()
  • uuid_generate_v4()
  • uuid_generate_v5()

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

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

PostgreSQL UUID 实例

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

使用以下语句创建 fruits 表:

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

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

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

INSERT INTO fruits (name)
VALUES
    ('Apple'),
    ('Peach'),
    ('Banana')
RETURNING *;
                  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 作为主键。