2012-12-14 9 views
9

życzliwej pomocy modyfikacji kolumny typu całkowitą całkowitoliczbowa tablicy:PostgreSQL - zmianę danych typu kolumny z całkowitą całkowitoliczbowa tablicę

ja utworzeniu tabeli w kolumnie content_id typu całkowitej. Następnie próbowałem zmienić content_id(integer) do integer[](integer array) ale jego błąd pokazując jak wyświetlane:

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

Pozdrawiam,

Sravan

Odpowiedz

16

Spróbuj tego (kolumna test_id jest typu INTEGER przed alter odbywa). PostgreSQL 8.4.

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

Jak zmieniłbyś typ w innym kierunku? INTEGER [] do INTEGER? Powiedz na przykład, że chcę zachować tylko pierwszy element. – thedouglenz

+0

Do migracji z powrotem za pomocą pierwszego elementu byłoby coś takiego: '' 'ALTER TABLE test.test_id ALTER COLUMN test_id TYPE INTEGER USING test_id [1] :: INTEGER;' '' Zwróć uwagę, że tablice są domyślnie 1-indeksowane. – GSP

2

To działało lepiej dla mnie!

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

Jeśli otrzymasz tablicę n-wymiarową (i nie chcesz) zestaw tabel aktualizacji colum = array (wybierz e z unnest (kolumna) u (e)); – Fotoncito

+0

Poza tym, że to nie działa dla mnie. Ale proszę oświecić nas swoim wglądem? – Fotoncito

Powiązane problemy