2011-12-01 22 views
12

ho una (9,0) database PostgreSQL con un card_id colonna, che è attualmente di tipo interoPostgreSQL Convert colonna da integer al testo

ho bisogno di cambiare questo digitare del testo

Qual è il modo più migliore Per realizzare questo?

L'unica soluzione che riesco a trovare riguarda la creazione di una colonna temporanea, l'eliminazione dell'originale e la ridenominazione, ho pensato che potrebbe essere un metodo migliore ??

+0

Le colonne di testo occupano diverse quantità di spazio sul disco. Non puoi semplicemente fare in modo che lo spazio significhi qualcosa di diverso. Anche in RDBMS con una GUI che consente di "cambiare il tipo", dietro le quinte viene creata una nuova colonna e l'originale rimosso. – MatBailie

+0

ok quindi quello che stai dicendo è che devo creare una nuova colonna? ta – DaveB

+0

Perché puoi. Dietro le quinte succede qualcosa di mostruoso, ma è comunque sul lato server. –

risposta

18

Hai provato ciò che il fine manuale suggests:

ALTER TABLE table ALTER COLUMN anycol TYPE anytype; 

A seconda della corrente e il nuovo tipo potrebbe essere necessario aggiungere USING ... a questa dichiarazione. Ma nel tuo caso specifico che non dovrebbe essere necessario, credo.

+0

Le versioni precedenti di IIRC non supportano l'OP –

+0

ha specificato 9.0. –

+0

yep 9.0, che funziona a meraviglia grazie – DaveB

6
ALTER TABLE table ALTER COLUMN card_id SET DATA TYPE text; 
Problemi correlati