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