用ALTER语句改变字符变化长度?

时间:2013-10-08 04:12:30

标签: postgresql database-design types ddl

我正在尝试将列的长度从character varying(40)更改为character varying(100)

按照此问题中描述的方法Increasing the size of character varying type in postgres without data loss

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

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

  

错误:字符52处的“TYPE”处或附近的语法错误

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

我在test db中尝试了同样的命令,现在使用9.2版进行了升级。它在那里工作得很好。

2 个答案:

答案 0 :(得分:2)

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

为了完全避免这种问题,我建议使用普通textvarchar(没有长度修饰符)来表示字符数据。 Details in this related question.

答案 1 :(得分:0)

删除单词TYPE,该语法在10年前未被识别,但没有它就应该没问题。