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

How do I set a default value for a UUID primary key column in Postgres?

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

ALTER TABLE my_object_times ADD PRIMARY KEY (id) DEFAULT uuid_generate_v4();

但我收到错误

PG::SyntaxError: ERROR:  syntax error at or near "DEFAULT"

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

如果 id 列已经存在于 table 中,并且您想通过将其设为主键并添加默认值来修改它,您可以分两步完成:

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();

(我现在无法测试,但应该可以)

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

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";