在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)