我們在表中有一個varchar列,我們需要升級到枚舉類型。在postgresql中將varchar列升級爲枚舉類型
varchar列中的所有值都是枚舉中的有效值。 varchar列中沒有空值。
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
錯誤:列 「varcharColumn」 不能轉換爲enum_type SQL狀態類型:42804
大約方式的輪是
- 創建枚舉類型另一個新列。
- 在類型轉換之後使用varchar列更新枚舉類型列。
- 刪除varchar列。
- 將枚舉類型列名重命名爲varchar列名。
有沒有更好的方法來實現這一目標?
在此先感謝。
當使用某些客戶端應用程序而不是查找表或簡單的約束列時,枚舉也會產生更多問題。因爲任何在JPA/Hibernate中使用枚舉的可疑人員都知道。 – 2013-03-27 11:12:49
謝謝a_horse_with_no_name!儘管我從文檔中找到了解決方案,但您的解釋非常全面和有用。 – Gopal 2013-03-27 11:34:25
我最近需要通過將枚舉移動到模式來重新組織枚舉,這對他們來說更有意義。因此,依賴枚舉的表需要將其類型「更改」爲指向枚舉的新位置。我做了如下,雙重演員:'alter table my_schema.my_column改變列sale_item_status類型my_schema.my_column_enum 使用((my_column :: text):: my_schema.my_column_enum) - HTH任何其他人與枚舉「問題「 – 2013-10-24 23:21:49