2011-12-01 9 views
12

Mam PostgreSQL (9.0) bazę danych z card_id kolumny, która jest aktualnie typu INTEGERPostgreSQL Konwersja kolumnę z całkowitą tekstu

Muszę to zmienić, aby wpisać tekst

Co jest najbardziej najlepszym sposobem osiągnąć to?

Jedyne rozwiązanie, jakie mogę znaleźć, to utworzenie tymczasowej kolumny, upuszczenie oryginału, a następnie zmiana nazwy, myślałem, że może to być lepsza metoda?

+0

Kolumny tekstu zajmują różne miejsca na dysku. Nie możesz po prostu zrobić z tego miejsca czegoś innego. Nawet w RDBMS, które mają graficzny interfejs użytkownika, aby umożliwić "tylko zmianę typu", za kulisami tworzona jest nowa kolumna, a oryginał usuwany. – MatBailie

+0

ok więc mówisz, że muszę utworzyć nową kolumnę? ta – DaveB

+0

Dlaczego możesz. Za kulisami dzieje się coś potwornego, ale i tak jest po stronie serwera. –

Odpowiedz

18

Czy próbowałeś Co porządny podręcznik suggests:

ALTER TABLE table ALTER COLUMN anycol TYPE anytype; 

zależności od aktualnego i nowego typu może trzeba dodać USING ... do niniejszego oświadczenia. Ale w twoim konkretnym przypadku nie powinno to być konieczne.

+0

Starsze wersje IIRC nie obsługiwały –

+0

OP określił 9.0. –

+0

yep 9.0, który działa dzięki uprzejmości – DaveB

6
ALTER TABLE table ALTER COLUMN card_id SET DATA TYPE text; 
Powiązane problemy