在postgres中增加字符变化types的大小而不会丢失数据

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

我有这个命令

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

该命令是否将字段大小从60增加到200,而不会丢失数据?

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

ALTER [COLUMN]列TYPEtypes[USINGexpression式]

而且,作为一个说明,创build一个表格,填充它并testing它不是一件容易的事情:)

正确的查询来更改特定列的数据types限制:

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

是。 但是它会重写这个表,并在重写期间专门locking它 – 试图访问这个表的任何查询都会等到重写完成。

考虑将types更改为文本,并使用检查约束来限制大小 – 更改约束不会重写或locking表。

在Postgresql 9.1版本中更改列大小

在列chainging varchar大小为更高值的列期间,表重新写入是必需的,在这个锁期间将持有表和用户表不能访问,直到表重新写入完成。

表名称: – userdata列名称: – acc_no

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

来自PostgreSQL 9.2相关说明 E.15.3.4.2

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

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