Postgres - 如何添加新列 uuid

gwc*_*gwc 5 postgresql uuid

我需要在表上添加新列,该列将是 uuid 数据类型,这里是我的代码:

ALTER TABLE core.example add COLUMN newcolumn SET DATA TYPE UUID USING (uuid_generate_v4())
Run Code Online (Sandbox Code Playgroud)

但告诉我这个错误:

ERROR:  type modifier is not allowed for type "uuid"
LINE 1: ALTER TABLE core.example add COLUMN newsi UUID  (uuid_genera...
Run Code Online (Sandbox Code Playgroud)

我不想更改列,而是在我的表上创建一个新列。知道怎么做吗?

问候

THX*_*138 13

添加新列时,您不使用SET DATA TYPE. 您的声明应如下所示:

ALTER TABLE core.example ADD COLUMN newcolumn UUID DEFAULT (uuid_generate_v4());
Run Code Online (Sandbox Code Playgroud)

DEFAULT 子句将立即用 UUID 填充该列。

或者,如果您只想用初始数据填充该列,则可以随后删除 DEFAULT 子句:

ALTER TABLE core.example ALTER COLUMN newcolumn DROP DEFAULT;
Run Code Online (Sandbox Code Playgroud)

请注意,如果您使用 Postgres 13 及更高版本,通常最好使用它,gen_random_uuid()因为该方法是内置的并且不依赖于uuid-ossp扩展。