如何在 Postgres 中为 UUID 主键列设置默认值?
Posted
技术标签:
【中文标题】如何在 Postgres 中为 UUID 主键列设置默认值?【英文标题】:How do I set a default value for a UUID primary key column in Postgres? 【发布时间】:2016-09-07 19:59:15 【问题描述】:我正在使用 PostgreSQL。我正在尝试创建一个主键列 taht 是一个 UUID,所以我运行了这个语句
ALTER TABLE my_object_times ADD PRIMARY KEY (id) DEFAULT uuid_generate_v4();
但我得到了错误
PG::SyntaxError: ERROR: syntax error at or near "DEFAULT"
编写上述语句的正确方法是什么(我正在更改,因为我正在更改现有的主键列)?
【问题讨论】:
复制到 dba.StackExchange.com:Default value for UUID column in Postgres 【参考方案1】:如果表中已经存在id
列,并且您想通过将其设为主键并添加默认值来对其进行修改,您可以分两步完成:
ALTER TABLE my_object_times ADD PRIMARY KEY (id);
ALTER TABLE my_object_times ALTER COLUMN id SET DEFAULT uuid_generate_v4();
如果该列根本不存在,那么您可以使用所需的所有属性创建它,只需执行以下操作:
ALTER TABLE my_object_times ADD id uuid PRIMARY KEY DEFAULT uuid_generate_v4();
(我现在无法测试,但应该可以)
【讨论】:
SQL 错误 [42883]:错误:函数 uuid_generate_v4() 不存在 提示:没有函数与给定名称和参数类型匹配。您可能需要添加显式类型转换。【参考方案2】:为了使用uuid_generate_v4()
,首先需要执行:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
【讨论】:
SQL 错误 [58P01]:错误:无法打开扩展控制文件“/usr/pgsql-12/share/extension/uuid-ossp.control”:没有这样的文件或目录以上是关于如何在 Postgres 中为 UUID 主键列设置默认值?的主要内容,如果未能解决你的问题,请参考以下文章
sQL数据库表的主键列设为标识,增量为1,下次插入数据时能不插入主键列吗
Node.js Sequelize UUID 主键 + Postgres