Postsql 修改字段长度和类型
以后更改字段长度会重写表,如果表比较大,那么表会加锁,需要很长时间
通过一种方法通过修改pg_attribute.atttypmod字段修改长度,不需要重写表
查询select * from pg_attribute where attrelid='sp_sa_salestat'::regclass and attname='goodsname'
将字段opcode修改为100长度单位
update pg_attribute set atttypmod=206 where attrelid='sp_sa_salestat'::regclass and attname='goodsname';
对于numric型长度是按整数转换的必须先查找要修改的长度在数据库里面的值,如numeric(12,4)长度是786440
修改字段类型
(如果表里有数据,谨慎使用!!!
如果表里有数据,谨慎使用!!!
如果表里有数据,谨慎使用!!!)
当列的类型为字符类型,当我们想修改为数值类型时
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);
如果字段里有空白字符,使用以下方法:
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);
在类型转换前先去空白。
修改类型为字符类型
ALTER TABLE the_table ALTER COLUMN col_name TYPE character varying(30) USING (col_name::character varying(30));