2015-04-09 11 views

risposta

14

Non è possibile modificare la tabella.

C'è un approccio alternativo. È possibile creare una nuova colonna con il vincolo NULL. Copia i valori dalla tua vecchia colonna a questa nuova colonna e quindi rilascia la vecchia colonna.

Qualcosa di simile a questo:

ALTER TABLE table1 ADD COLUMN somecolumn (definition as per your reqm); 
UPDATE table1 SET somecolumn = oldcolumn; 
ALTER TABLE table1 DROP COLUMN oldcolumn; 
ALTER TABLE table1 RENAME COLUMN somecolumn TO oldcolumn; 
+0

Si noti che non funzionerà se la colonna fa parte delle chiavi di ordinamento. Sfortunatamente, in tali situazioni, devi ricreare la tabella. – jmelanson

7

Non v'è alcun modo per cambiare colonna Redshift.

Posso suggerirvi di creare una nuova colonna, copiare i valori dalla vecchia alla nuova colonna e rilasciare la vecchia colonna.

ALTER TABLE Table1 ADD COLUMN new_column (___correct_column_definition___); 
UPDATE Table1 SET new_column = column; 
ALTER TABLE Table1 DROP COLUMN column; 
ALTER TABLE Table1 RENAME COLUMN new_column TO column; 
+0

Non ho mai visto risposte simili nello stackoverflow :) Ho accettato la risposta di Tripathi dato che la sua risposta è stata pubblicata prima, spero che non ti dispiaccia. – shihpeng

+0

Davvero divertenti, risposte così simili. Non l'ho visto mentre non hai commentato, ho solo risposto e ho lasciato la domanda. Va tutto bene, buona fortuna e buona programmazione. –

Problemi correlati