小编典典

在 Postgres 中为插入语句生成 UUID?

all

我的问题很简单。我知道 UUID 的概念,我想生成一个来引用我数据库中“商店”中的每个“项目”。看起来很合理吧?

问题是以下行返回错误:

honeydb=# insert into items values(
uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
ERROR:  function uuid_generate_v4() does not exist
LINE 2: uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
        ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

我已经阅读了以下页面:http ://www.postgresql.org/docs/current/static/uuid-
ossp.html

在此处输入图像描述

我在 Ubuntu 10.04 x64 上运行 Postgres 8.4。


阅读 124

收藏
2022-03-13

共1个答案

小编典典

uuid-ossp是一个贡献模块,因此默认情况下它不会加载到服务器中。您必须将其加载到数据库中才能使用它。

对于现代 PostgreSQL 版本(9.1 和更高版本),这很容易:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

但对于 9.0 及以下版本,您必须改为运行 SQL 脚本来加载扩展。请参阅8.4 中有关 contrib
模块的文档

对于 Pg 9.1 和更新版本,请阅读当前的 contrib
文档
CREATE EXTENSION. 这些功能在 9.0 或更早版本中不存在,例如您的 8.4。

如果您使用的是 PostgreSQL 的打包版本,您可能需要安装一个包含 contrib
模块和扩展的单独包。在您的包管理器数据库中搜索“postgres”和“contrib”。

2022-03-13