在没有数据丢失的情况下增加postgres中字符变化类型的大小

时间:2011-03-30 15:25:24

标签: postgresql

我需要在postgres数据库表中增加字符变化(60)字段的大小而不会丢失数据。

我有这个命令

alter table client_details alter column name set character varying(200);

此命令会将字段大小从60增加到200而不会丢失数据吗?

6 个答案:

答案 0 :(得分:77)

更改特定列的数据类型限制的正确查询:

ALTER TABLE client_details ALTER COLUMN name TYPE character varying(200);

答案 1 :(得分:32)

参考this文档,不会有数据丢失,alter column只会将旧数据转换为新数据,因此字符数据之间的转换应该没问题。但我不认为你的语法是正确的,请参阅我之前提到的文档。我认为你应该使用这种语法:

  

ALTER [COLUMN]列TYPE类型[   使用表达式]

作为一个说明,创建一个表,填充它并测试它会不会更容易:)

答案 2 :(得分:6)

是。但它会重写此表并在重写期间专门锁定它 - 任何试图访问此表的查询都将等到重写完成。

考虑将类型更改为文本并使用检查约束来限制大小 - 更改约束不会重写或锁定表。

答案 3 :(得分:1)

更改Postgresql 9.1版本中的列大小

在列中将varchar大小更新为更高的值时,在此锁定期间需要表重写,将在表和用户表上无法访问 直到表重写完成。

表名: - userdata 列名: - acc_no

ALTER TABLE userdata ALTER COLUMN acc_no TYPE varchar(250);

答案 4 :(得分:0)

来自PostgreSQL 9.2 Relase Notes E.15.3.4.2

  

增加varchar或varbit列的长度限制,或者完全删除限制,不再需要重写表。

答案 5 :(得分:0)

你可以使用下面的sql命令
ALTER TABLE client_details ALTER COLUMN name TYPE varchar(200)