如何在Postgres中为UUID主键列设置默认值?

3 postgresql uuid default primary-key

我正在使用PostgreSQL.我正在尝试创建一个主键列taht是一个UUID,所以我运行了这个语句

ALTER TABLE my_object_times ADD PRIMARY KEY (id) DEFAULT uuid_generate_v4();
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

PG::SyntaxError: ERROR:  syntax error at or near "DEFAULT"
Run Code Online (Sandbox Code Playgroud)

编写上述语句的正确方法是什么(我正在改变,因为我正在更改现有的主键列)?

red*_*neb 9

如果该列id已存在于表中,并且您希望通过将其作为主键并添加默认值来对其进行修改,则可以分两步执行:

ALTER TABLE my_object_times ADD PRIMARY KEY (id);
ALTER TABLE my_object_times ALTER COLUMN id SET DEFAULT uuid_generate_v4();
Run Code Online (Sandbox Code Playgroud)

如果该列根本不存在,那么您可以使用所需的所有属性创建它,只需执行以下操作:

ALTER TABLE my_object_times ADD id uuid PRIMARY KEY DEFAULT uuid_generate_v4();
Run Code Online (Sandbox Code Playgroud)

(我现在无法测试,但它应该工作)

  • SQL 错误 [42883]:错误:函数 uuid_generate_v4() 不存在 提示:没有函数与给定名称和参数类型匹配。您可能需要添加显式类型转换。 (3认同)

小智 7

为了使用uuid_generate_v4(),您首先需要执行:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";