我正在使用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"
编写上述语句的正确方法是什么(我正在改变因为我正在更改现有的主键列)?
答案 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";