2015-04-09 8 views

Antwort

14

Sie können die Tabelle nicht ändern.

Es gibt einen alternativen Ansatz. Sie können eine neue Spalte mit NULL-Einschränkung erstellen. Kopieren Sie die Werte aus Ihrer alten Spalte in diese neue Spalte und löschen Sie die alte Spalte.

Etwas wie folgt aus:

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

Beachten Sie, dass es nicht funktioniert, wenn die Spalte Teil der Sortierschlüssel ist. In solchen Situationen müssen Sie die Tabelle leider neu erstellen. – jmelanson

7

Es gibt keine Möglichkeit Spalte auf Redshift zu ändern.

Ich kann Ihnen vorschlagen, neue Spalte zu erstellen, Werte von alten in neue Spalte kopieren und alte Spalte löschen.

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

Ich habe nie ähnliche Antworten im Stackoverflow gesehen :) Ich habe Tripathis Antwort angenommen, da seine Antwort schon früher gepostet wurde, ich hoffe, es macht dir nichts aus. – shihpeng

+0

Wirklich lustig, so ähnliche Antworten. Ich habe das nicht gesehen, während Sie nicht kommentiert haben, hat nur geantwortet und hat die Frage verlassen. Es ist alles in Ordnung, viel Glück und gute Programmierung. –

Verwandte Themen