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

时间:2016-09-07 19:59:16

标签: postgresql primary-key default uuid

我正在使用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"

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

2 个答案:

答案 0 :(得分:8)

如果表中已存在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();

(我现在无法测试,但它应该有效)

答案 1 :(得分:2)

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

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";