Postgres,alter table 不会更改列定义。

huangapple go评论62阅读模式
英文:

Postgres, alter table dosen't change column definition

问题

我有一个表格,其中有一个列名为 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)

我不知道为什么会发生这种情况。

英文:

I have a table with a column name with size varchar(512), I have tried to modify its size to 2048:

alter table table_name alter column name type varchar(2048)

But nothing is happened.

So I have tried to delete column :

ALTER TABLE tbl_name DROP COLUMN name;

and it works.

And than I add the column another time:

alter table tbl_name
add column name varchar(2048)

But the column created is always varchar(512)

I don't know why it happens.

答案1

得分: 0

修改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);
英文:

Modify a column size in Postgres, you can add a new column with the desired size, copy the data from the old column to the new column, and then drop the old column.

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;

or cast the data in old column to new data type

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

huangapple
  • 本文由 发表于 2023年3月3日 22:21:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/75628251.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定