Postgresql将列类型从UUID更改为int4



我想将列的dataType从UUID更改为int4

ALTER TABLE tableA ALTER COLUMN columnA TYPE int4(32);

但这给了我一个错误。

ERROR: type modifier is not allowed for type "int4"

我试着在网上搜索,发现我必须使用USING,但不知道如何使用。

您无法真正将UID转换为int。值太多,因此您会面临冲突的风险(随着表变大,冲突风险会上升到100%(。

我的猜测是,您真的想要在表上有一个id列。如果是,添加一个新列并删除旧列:

alter table tableA add a_id int generated always as identity,
drop columnA;

注意:在旧版本的Postgres中,您将使用serial而不是int generated always as identity

您的32在语法上被视为修饰符。修饰符允许用于数字和十进制类型,但不允许用于普通int,int4(xxx(在Postgres中不是有效类型(我相信它在mysql中(int4只是integer的别名。

最新更新