2015-04-09 17 views

cevap

14

Tablonuzu değiştiremezsiniz.

Alternatif bir yaklaşım var. NULL kısıtlaması olan yeni bir sütun oluşturabilirsiniz. Eski sütundaki değerleri bu yeni sütuna kopyalayın ve ardından eski sütunu bırakın. Böyle

şey:

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

Sütun, sıralama tuşlarının bir parçası olması durumunda çalışmayacağını unutmayın. Maalesef, bu gibi durumlarda, tabloyu yeniden oluşturmanız gerekir. – jmelanson

7

Redshift üzerinde sütun değiştirmek için bir yolu yoktur.

Yeni sütun oluşturmanızı, eskiden yeni sütuna değerleri kopyalamanızı ve eski sütunu bırakmanızı öneririz.

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

Stackoverflow'ta benzer cevapları hiç görmedim :) Cevabını daha önce yayınladığından beri Tripathi'nin yanıtını kabul ettim, umursamayacağınızı umuyorum. – shihpeng

+0

Gerçekten komik, çok benzer cevaplar. Görmedin, sadece cevaplamadım ve soruyu cevapladım. Her şey yolunda, iyi şanslar ve mutlu kodlama. –