postgresql Postgres,更改表不会更改列定义

4zcjmb1e  于 2023-03-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(137)

我有一个表,其中的列名大小为varchar(512),我尝试将其大小修改为2048:
alter table table_name alter column name type varchar(2048)
但什么也没发生。
所以我尝试删除列:
ALTER TABLE tbl_name DROP COLUMN name;
而且很有效。
然后我再加一列:
alter table tbl_name add column name varchar(2048)
但创建的列始终为varchar(512)
我不知道为什么会这样。

vhipe2zx

vhipe2zx1#

在Postgres中修改列大小,您可以添加具有所需大小的新列,将数据从旧列复制到新列,然后删除旧列。

ALTER TABLE table_name ADD COLUMN new_name varchar(2048);
UPDATE table_name SET new_name = name;
ALTER TABLE table_name DROP COLUMN name;
ALTER TABLE table_name RENAME COLUMN new_name TO name;

或将旧列中的数据转换为新数据类型

ALTER TABLE table_name ALTER COLUMN name TYPE varchar(2048) USING name::varchar(2048);

相关问题