英文:
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);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论