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

问题是以下行返回错误:

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。

最佳答案

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

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

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

但对于9.0及以下版本,您必须改为运行SQL脚本来加载扩展。参见the documentation for contrib modules in 8.4

对于Pg 9.1及更高版本,请阅读the current contrib docs CREATE EXTENSION 。这些功能在9.0或更早的版本(例如8.4)中不存在。

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

关于postgresql - 在Postgres中为插入语句生成UUID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12505158/

10-12 02:56