2012-12-14 13 views
9

tamsayı tamsayıdan sütun veri türü alter:PostgreSQL Lütfen dizi tamsayı Integer bir sütun değiştirmek için yardımcı dizi

I tipi tamsayı kolonu content_id bir tablo yarattığı

. görüntülendiği gibi o zaman content_id(integer)integer[](integer array) vermekle kalmayıp aynı zamanda gösteren hatayı değiştirmeye çalıştı: (alter gerçekleşmeden önce kolon test_id tipi INTEGER taşımaktadır)

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

Selamlar,

Sravan

cevap

16

bu deneyin. PostgreSQL 8.4.

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

Diğer yönünü nasıl değiştirirsiniz? INTEGER [] INTEGER? Örneğin, sadece ilk elemanı korumak istiyorum. – thedouglenz

+0

İlk öğeyi kullanarak geri gitmek için şöyle bir şey olurdu: '' 'ALTER TABLE test.test_id ALTER COLUMN test_id TÜRÜ INTEGER KULLANIMI test_id [1] :: INTEGER;' 'Dizilerin varsayılan olarak 1-dizinli olduğunu unutmayın. – GSP

2

Bu benim için daha iyi çalıştı!

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

Bir n boyutlu dizi alırsanız (ve bunu istemezseniz) güncelleştirme tablosu kümesi colum = array (e (d) ifadesini seçin (sütun) u (e)); – Fotoncito

+0

Bunun dışında benim için çalışmadı. Ama lütfen bize içgörünüzü aydınlatın? – Fotoncito

İlgili konular