postgresql - 使用 ALTER 语句更改字符不同长度?

标签 postgresql database-design types ddl

我正在尝试将列的长度从字符变化(40)更改为字符变化(100)

按照本问题Increasing the size of character varying type in postgres without data loss中描述的方法进行操作

ALTER TABLE info_table ALTER COLUMN docs TYPE character varying(100);

尝试使用此命令但返回语法错误

ERROR: syntax error at or near "TYPE" at character 52

此命令需要进行任何更改吗?使用 PostgreSQL 版本 7.4.30(正在升级到 9.2 :))。

我在测试数据库中尝试了相同的命令,该命令现已升级到版本 9.2。那里工作得很好。

最佳答案

在旧版本 7.4 中,无法动态更改列类型。 Check the old manual.您必须添加另一列,使用(可能已转换的)值更新它,然后删除旧列,重命名新列 - 最好在单个事务中。对 View 或其他依赖对象有副作用......

为了完全避免此类问题,我建议对字符数据使用纯文本textvarchar(不带长度修饰符)。 Details in this related question.

关于postgresql - 使用 ALTER 语句更改字符不同长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238949/

相关文章:

go - col.ToStrings 未定义(类型 Columns 没有字段或方法 ToStrings)

mysql - 表之间具有一对一关系的理由

ruby-on-rails - Notifications ala Facebook(数据库实现)

使用 WHERE 子句的 Android sql 查询大于

sql - 根据这些行之间的条件过滤 Postgres 中的重复行

types - Elixir、透析器、类型和子类型警告

typescript :从类型中排除所有必需的属性

postgresql - 无法使用 ASP.NET Core 和身份添加声明

python - 将 bytea 从 Postgres 转换回 python 中的字符串的正确方法

ruby-on-rails - 如何使 strftime 和 GROUP 以及 WHERE 在 Postgres 中工作