2012-12-14 31 views
9

请帮助修改类型整数的一列整数数组:PostgreSQL的 - 从整数ALTER列的数据类型为整数数组

我已经创建的表型整数的列content_id。然后我试图改变content_id(integer)integer[](integer array)但其示出了误差作为显示:

TestDatabase=# ALTER TABLE tbl_handset_content ALTER COLUMN content_id TYPE integer[]; 
ERROR: column "content_id" cannot be cast to type "pg_catalog.int4[]" 

问候,

Sravan

回答

16

尝试此(列为test_id为整数类型的ALTER发生之前)。 PostgreSQL 8.4。

ALTER TABLE test.test_id 
    ALTER COLUMN test_id TYPE INTEGER[] 
    USING array[test_id]::INTEGER[]; 
+0

你会如何改变其他方向的类型? INTEGER []到INTEGER?比方说,我只想保留第一个元素。 – thedouglenz

+0

使用第一个元素迁移回来就像这样:'''ALTER TABLE test.test_id ALTER COLUMN test_id TYPE INTEGER USING test_id [1] :: INTEGER;'''请注意,默认情况下数组是1索引的。 – GSP

2

这对我更好!

ALTER TABLE schema.table 
    ALTER COLUMN column 
    DROP DEFAULT; 
ALTER TABLE schema.table 
    ALTER COLUMN column TYPE INTEGER[] 
    USING array[column]::INTEGER[]; 
ALTER TABLE schema.table 
    ALTER COLUMN column SET DEFAULT '{}'; 
+0

如果你得到一个n维数组(并且不想这样) 更新表set colum = array(从unnest(column)u(e)中选择e); – Fotoncito

+0

除了它不适合我。但是,请以您的洞察力启发我们? – Fotoncito

相关问题